我正在尝试proxy_pass
使用命名位置访问 Apache2 实例,但 Nginx 尝试在磁盘上找到命名位置?
Nginx配置:
root /var/www;
location / {
try_files $uri @apache =404;
}
location @apache {
proxy_intercept_errors on;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://127.0.0.1:8080;
}
尝试访问不存在的文件应该使用 proxy_pass,但是却失败并出现 404 错误,并且日志显示:
trying to use file: "@apache" "/var/www@apache"
它是一个命名位置,那么为什么它尝试将其读取为文件路径?
答案1
命名的位置需要出现在 的最后try_files
。您不应该在它之后有任何东西(事实上,无论如何它都永远不会被到达)。
try_files $uri @apache;