Nginx обслуживает 2 разных каталога с 2 разными URL

Я пытаюсь использовать nginx, чтобы он обслуживал две разные директории в разных местах моей файловой системы, используя два разных URL-адреса. Итак, учитывая наличие двух каталогов в моей файловой системе /path/to/dir1 и /path/to/dir2, я хочу, чтобы пользователи на моем веб-сайте могли иметь доступ к mysite / d1 и mysite / d2 и чтобы каждый из этих URL-адресов обслуживал dir1 и dir 2 соответственно. Вот что я попробовал:

server {

        listen       80;

        location /d1/ {
            root    /path/to/dir1;
            autoindex on;
        }

        location /d2/ {
            root   /path/to/dir2;
            autoindex on;
        }

    }

Я немного запутался, почему это не работает, потому что, когда я использую конфигурацию

server {

    listen       80;

    location / {
        root    /path/to/dir1;
        autoindex on;
    }

}

и перейдите на MySite / я могу получить доступ к DIR1, как ожидалось

1 ответ

Решение

Проблема заключается в добавлении запроса URI, когда вы используете root

  location /d1/ {
        root    /path/to/dir1;

Это означает, что вы хотите искать файлы в /path/to/dir1/d1/, Так что вам нужен псевдоним, потому что в случае псевдонима request_uri берется только после объявленного местоположения

server {

        listen       80;

        location /d1/ {
            alias    /path/to/dir1;
            autoindex on;
        }

        location /d2/ {
            alias   /path/to/dir2;
            autoindex on;
        }

    }
Другие вопросы по тегам