http://example.com
: мой сайтhttp://example.net
: прокси-серверЯ пытаюсь настроить блок сервера nginx как сервер статического содержимого и обратный прокси. Nginx должен сначала проверить наличие статических файлов, а затем перенаправить в прокси-приложение, если файл не существует. Он настроен так:
location @backend {
proxy_pass http://example.net;
}
location / {
try_files $uri $uri/ @backend;
}
Однако при такой конфигурации доступ к http://example.com
возвращает 403 Forbidden
: похоже, что nginx пытается обслуживать статическую папку, не находит index.html
и не работает без прокси example.net
. Затем мне нужно явно добавить маршрут для /
:
location = / {
proxy_pass http://example.net;
}
Туда http://example.com/
правильно проксируется на http://example.net
. Но такая конфигурация кажется странной: есть ли лучший способ прокси? /
?
В $uri/
пункт вызывает проблему.
Если трейлинг не нужен /
для добавления к URI, представляющим статический каталог, вы можете использовать:
location / {
try_files $uri @backend;
}
Кроме того, ваше существующее решение также работает с try_files
вместо дубликата proxy_pass
:
location = / {
try_files $uri @backend;
}
Видеть этот документ для большего.