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

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. Задача решена.