在另一个子目录中的nginx代理

我试图让下面的configuration在Nginx中工作,基本上重置是另一个Web应用程序,是更大的应用程序的一部分,重置较大的应用程序的数据库。

目前,无论何时我尝试访问domain.com/reset/,它都以domain.com/的path,然后传递到服务器,它需要/ reset /的响应。

tldr; 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; } 

这里是一个快速的示例configuration删除所有的dynamic部分来testingnginx的位置匹配是非常基本的function是:

 location /reset { return 200 "reset"; } location /reset/media { return 200 "reset media"; } location / { return 200 "default"; } 

如果触发了正确的位置,那么您可以放回dynamic内容,因为它们不会产生影响。

确保您的configuration通过以下方式应用

  1. nginx -ttesting它
  2. 在发出service nginx reload任何错误使得重新加载失败之后检查你的错误日志

一旦你正确地testing了位置,并且切换回了你提供的configuration,任何下面的错误很可能来自后端或者你configurationnginx的方式,但是不是位置本身。