Назад | Перейти на главную страницу

Как мне получить Nginx не в корневом каталоге («/») для обслуживания файлов?

Я новичок в Nginx. Я арендовал небольшой VPS с Ubuntu 12.04 для тестирования. Я не арендовал домен, поэтому делаю запросы напрямую, используя ip. Для этого вопроса предположим, что IP-адрес 209.208.26.89. Установил последний стабильный Nginx с официального ppa.

После установки Nginx и проверки его работы (в моем браузере http://209.208.26.89) Я удалил конфигурацию по умолчанию из / etc / nginx / sites-enabled. Сначала я использовал эту конфигурацию:

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

        root /home/www-data/public-www;
        index index.html index.htm; #index.html is inside /home/www-data/public-www

        server_name 209.208.26.89; #remember, no domain

        location /example {
                root /home/www-data/public-www/example;
                index hello.html; #hello.html is inside /home/www-data/public-www/example
                try_files $uri $uri/ =404;
        }
}

Все каталоги и разрешения установлены правильно.

Когда я получил доступ к http://209.208.26.89/example Меня встретили 404. Странно то, что доступ к http://209.208.26.89/ даст файл hello.html.

Как это могло произойти? Я устанавливаю этот файл в местоположение /example!

Однако потом я попробовал вот что:

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

        root /home/www-data/public-www;
        index index.html index.htm;

        server_name 209.208.26.89; #remember, no domain

        location /example {
                alias /home/www-data/public-www/example; #HERE'S THE CHANGED LINE
                index hello.html;
                try_files $uri $uri/ =404;
        }
}

Используя эту конфигурацию, http:// 209.208.26.89/example правильно даст hello.html. НО http:// 209.208.26.89 даст тот же файл.

Чтобы было понятно, я хочу сделать следующее: при запросе http:// 209.208.26.89/example Nginx должен обслуживать меня /home/www-data/public-www/example/example.html. Я сделал это со своей второй конфигурацией, недостатком которой был сервер также в http:// 209.208.26.89. Но мое второе требование - «http: // 209.208.26.89/», чтобы ничего мне не обслуживать (должно возвращать 404).

Я уверен, что мне не хватает чего-то очевидного, но никакое руководство или документация, похоже, не укажет мне правильное направление. Может ли кто-нибудь помочь мне понять, что происходит?

Я считаю, что это вызвано этой строкой:

root /home/www-data/public-www;

http://nginx.org/en/docs/http/ngx_http_core_module.html#root

вы можете удалить это или указать в другом месте.