![子目录中的另一个 nginx 代理](https://linux22.com/image/802911/%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E5%8F%A6%E4%B8%80%E4%B8%AA%20nginx%20%E4%BB%A3%E7%90%86.png)
我正在尝试让下面的配置在 Nginx 中工作,基本上重置是另一个 Web 应用程序,它是更大的应用程序的一部分,它会重置更大应用程序的数据库。
目前,每当我尝试访问 domain.com/reset/ 时,它都会采用 domain.com/ 作为路径,然后将其传递到服务器,并要求服务器对 /reset/ 进行响应。
太长不看;http://domain.com/reset/正在触发第三个位置块而不是第一个。
location /reset/ {
proxy_pass http://127.0.0.1:9091;
proxy_read_timeout 3600;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /reset/media {
alias /home/jsoft/reset/srv/static/;
expires 1y;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_read_timeout 300;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
答案1
下面是一个快速示例配置,删除了所有动态部分,以测试 nginx 的最基本功能,即位置匹配:
location /reset {
return 200 "reset";
}
location /reset/media {
return 200 "reset media";
}
location / {
return 200 "default";
}
如果触发了正确的位置,那么您可以将动态内容放回去,因为它们不会产生影响。
确保您的配置已应用:
- 使用以下方法测试
nginx -t
- 检查错误日志,检查是否有
service nginx reload
任何错误导致重新加载失败
一旦您正确测试了位置并切换回您提供的配置,任何以下错误很可能来自后端或您配置的 nginx 与其对话的方式,而不是位置本身。