我有多个ASP.NET应用程序在单个IIS服务器上运行,每个应用程序具有不同的端口.
我已经在同一个服务器上安装了Nginx,以便我的客户端只能使用80端口访问我所有的应用程序.
Nginx运行在80端口上.我的单个ASP.NET应用程序也启动并运行.
location /students/ { 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:84; } location /registration/ { 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:82; }
然后我重新启动了Nginx,并在浏览器中输入了url http://127.0.0.1/students/. Nginx提供了404页面.
我没有对conf文件进行任何其他更改.
我做错了什么?
解决方法
我相信你所遇到的问题与URL路径的开始有关.网址http://120.0.0.1:84/students/返回页面还是404?如果您希望访问http://127.0.0.1:80/students/并查看http://127.0.0.1/的页面,您会发现Nginx不会使用此配置转换您的路径.相反,它在代理服务器上查找完全相同的路径.
您需要将/的结尾放在proxy_pass指令中:
location /students/ { 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:84/; }
这是Nginx配置中的一个微妙但重要的工具!如果不包含反斜杠,则http://127.0.0.1:84将被视为服务器位置.如果您有反斜杠,它将被视为一个URL,它将替换代理URL中的所有内容,直到“位置”部分.