LINUX.ORG.RU

nginx раздача статики

 ,


0

1

Добрый день

Есть у меня документация. index.html находится по пути $MY_DIR_HOME/docs/build/html

Мне надо чтоб по запросу http://myfu***ngsite.com/docs выдавалась моя index.html

Я добавляю в sites-available файл типа my_docs с таким содержимым.

server {
        listen 80;
        root $MY_DIR_HOME/docs/build/html;
        index index.html index.htm;

        location "/docs" {
                try_files $uri $uri/ =404;
        }
}

Делаю слабую сслыку в sites-enabled, презапускаю nginx и ничего не работает.

Подскажите плиз...

ничего не работает.

А конкретней? Не ребутается nginx? Если ок, то какую ошибку отдает страница?

Amet13 ★★★★★ ()
Ответ на: комментарий от Closius

Так то главная страница nginx работает..

Страница nginx по умолчанию, которая из коробки была? Ты убрал дефолтный сайт из sites-enabled? Там описан сервер, который считается сервером по умолчанию для 80 порта, так как у тебя здесь не указан server_name, то при наличии сервера по умолчанию твой вообще не будет использоваться.

tiandrey ★★★★★ ()
Ответ на: комментарий от gnunixon
server {
        listen 80;
        root $AMIC_HOME/docs/build/html;
        index index.html index.htm;
        server_name documentations;

        location /docs {
                alias $AMIC_HOME/docs/build/html;
        }
}

Всеравно не работает....

Closius ()
Ответ на: комментарий от tiandrey

Не убирал.. А как мне использовать и тот и тот? На что вливает server_name ? У меня дотсуп к сайту идет только по айпишнику, ну либо длинный днс (сайт на AWS).

Closius ()
Ответ на: комментарий от Closius

На что вливает server_name ?

Понимаешь, на одной физической машине на одном порту может крутиться несколько разных сайтов со своей иерархией. Соответственно, для каждого сайта пишется своя директива server {}. Как веб-сервер поймёт, какой сайт ему отдавать, если они все на одном порту висят? Для этого он смотрит на то, какой сайт запрашивает пользователь. Если есть server с таким server_name, который запросил пользователь - используется именно он. Иначе используется тот сервер, у которого в директиве listen указан параметр default.

В качестве server_name может быть и IP сервера в том числе. Читай официальную доку: http://nginx.org/ru/docs/http/server_names.html#miscellaneous_names

tiandrey ★★★★★ ()
Ответ на: комментарий от tiandrey

Окей. Удалил из default из listen default_server. Точнее закоментировал их:

server {
        listen 80; #default_server;
#        listen [::]:80 default_server ipv6only=on;

        root /usr/share/nginx/html;
        index index.html index.htm;
        server_name localhost;

        location / {
                try_files $uri $uri/ =404;
        }

Свой сайт таким сделал.

server {
        listen 80 default_server;
        root $MY_SITE_HOME/docs/build/html;
        index index.html index.htm;
        server_name "";

        location /docs/ {
                alias /;
        }
}

перезапустил. Нихрена не работает + приветственная страница энжина всеравно висит..

Closius ()
Ответ на: комментарий от Closius

А ты уверен, что он перезапустился? Делал reload или restart? В логе он что-нибудь написал? nginx -t что говорит?

tiandrey ★★★★★ ()
Ответ на: комментарий от tiandrey

делал и рестар и релоад и сервер нейм убирал...

ubuntu@ip-172-31-36-134:/etc/nginx/sites-available$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful

Closius ()
Ответ на: комментарий от Closius

Ну попробуй вообще симлинк на дефолт удалить, перезапусти, посмотри, что из этого выйдет. У меня подозрение, что nginx у тебя так и не перезапустился.

tiandrey ★★★★★ ()
Ответ на: комментарий от tiandrey

Полностью закоментил default.

ubuntu@ip-172-31-36-134:/etc/nginx/sites-available$ sudo service nginx restart
 * Restarting nginx nginx                                               [ OK ]
ubuntu@ip-172-31-36-134:/etc/nginx/sites-available$ sudo service nginx stop
ubuntu@ip-172-31-36-134:/etc/nginx/sites-available$ sudo service nginx status
 * nginx is not running
ubuntu@ip-172-31-36-134:/etc/nginx/sites-available$ sudo service nginx start
ubuntu@ip-172-31-36-134:/etc/nginx/sites-available$ sudo service nginx status
 * nginx is running
ubuntu@ip-172-31-36-134:/etc/nginx/sites-available$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
ubuntu@ip-172-31-36-134:/etc/nginx/sites-available$

Closius ()
Ответ на: комментарий от tiandrey

сделал в общем вот так и все заработало: вместо $MY_SITE_HOME сделал полный путь...

кстати а как задать переменную окружения (которую я задую export BLABLA=blabla), чтобы она не удалялась при перезагрузке?

server {
        listen 80 default_server;
        # maybe need direct path
        root $MY_SITE_HOME/docs/build/html;
        index index.html index.htm;

        location /docs {
		        # maybe need direct path
                alias $MY_SITE_HOME/docs/build/html;
        }
}
Closius ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.