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

nginx 403 при обслуживании статических файлов + обратный прокси

Я пытаюсь обслуживать приложение узла через nginx, но сначала пытаюсь обслужить статические файлы, которые могут находиться в /public папка. У меня столько работы - но при доступе domain.tld/ или индекс статических папок, я получаю 403; directory index of "/var/www/domain.tld/" is forbidden. Все разрешения кажутся правильными, поэтому я немного запутался.

Это мой серверный блок;

server {
    server_name domain.tld;

    location / {
        root /var/www/domain.tld/public;
        try_files $uri $uri/ @proxy;
        access_log off;
    }

    location @proxy {
        proxy_pass http://127.0.0.1:3000;
    }
 }

Доступ к любой случайной странице (включая предполагаемые подкаталоги) правильно передает прокси в приложение узла. Однако в случае корня / и корня любого существующего статического каталога 403.

Любые идеи?

Это потому, что каталог существует, и поэтому try_files чек

try_files $uri $uri/ @proxy;

удается. Но нет файла индекса каталога (обычно index.html, видеть индекс), и autoindex тоже не включается (см. автоиндекс).

В зависимости от того, что вы хотите, рассмотрите следующие варианты:

  • Оставьте как есть (и можно настроить, какие индексные файлы используются).
  • Всегда передавайте каталоги в серверную часть. удалять $uri/ из try_files сделать это, то есть:

    location /
        root /var/www/domain.tld/public;
        try_files $uri @proxy;
    }
    
  • Проверьте конкретный индексный файл через try_files (и запрос отправится на бэкэнд, если он не найден):

    location /
        root /var/www/domain.tld/public;
        try_files $uri $uri/index.html @proxy;
    }
    
  • включить autoindex:

    location /
        root /var/www/domain.tld/public;
        try_files $uri $uri/ @proxy;
        autoindex on;
    }