Nginx try_files и именованное местоположение не работают должным образом
Раньше (около 5 месяцев назад) все работало хорошо, прямо сейчас вместо @app index.html подается.
Та же проблема на версии nginx: 1.6.2 и 1.8
Это мой /etc/nginx.conf
http {
include mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name localhost;
root /opt/app/server/html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/html;
}
}
include /etc/nginx/conf.d/*.conf;
}
Это мой /etc/nginx/conf.d/user_example.conf
server {
listen 80;
server_name user.example.com;
root /home/user/webapps/;
location / {
try_files $uri $uri/ @app; (removed index.html;)
}
location @app {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:9000;
}
}
Может кто-нибудь объяснить мне, почему @app пропущен?
Хм, это может быть другой вопрос, но... Если я удалю /home/user/webapps/index.html
и перейти к user.example.com
я получил 403 Forbidden
, И я хочу "выполнить" proxy_pass из @app, что мне нужно изменить?
Изменен конфиг - но все же хотелось бы узнать, как использовать это именованное местоположение.
server {
listen 80;
server_name user.example.com;
root /home/user/webapps/;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:9000;
}
}
Проблема не в названии места @app
но $uri/
неправильные разрешения над каталогом /home/user/webapps
, Задача решена.