我目前在我的开发环境中使用以下虚拟服务器代理设置,定义的虚拟服务器工作正常,但是当我点击我的 catchall 时出现了一个坏网关错误
这个想法是使用 nginx 作为前端,在端口 80 上并排运行 IIS Apache 和 Tomcat,并使用 IIS(在我的设置中为端口 88)作为 catchall 规则的默认设置
这也让我能够从我们的生产或测试服务器中代理出我需要的任何东西,而不必在本地环境中维护 60gb 的内容文件存储,也不必担心通过虚拟目录隧道传输到我们的测试服务器环境
(由于需要更改旧代码来支持它,因此我们目前不使用 CDN)
我希望它捕获定义的 URL 并配置它们的代理,否则只需将 URL 传递给 IIS
所以我最大的问题是,为什么这会导致网关错误以及如何修复它以使其正常工作,或者我是否在这里滥用系统,我对 nginx 有点陌生,并且无法通过详尽的谷歌和 SE 搜索找到任何类似的东西
server {
listen 80;
server_name m.dev.someurl.com;
location / {
proxy_pass http://m.dev.someurl.com:88;
proxy_redirect http://m.dev.someurl.com:88/ /;
proxy_read_timeout 60s;
# May not need or want to set Host. Should default to the above hostname.
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 /Content {
proxy_pass http://m.productionserver.com/Content;
proxy_redirect http://m.productionserver.com/Content/ /;
proxy_read_timeout 60s;
# May not need or want to set Host. Should default to the above hostname.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80 default_server;
#server_name _;
location / {
proxy_pass http://$host:88;
proxy_redirect http://$host:88/ /;
proxy_read_timeout 60s;
# May not need or want to set Host. Should default to the above hostname.
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
当 catchall 应该被命中时,会生成类似这样的日志条目,请注意,使用的所有 URL 都在 hosts 文件中引用,以进行本地解析
2015/02/12 11:16:20 [error] 1248#8412: *2 no resolver defined to resolve dev.serverurl.ca, client: 127.0.0.1, server: , request: "GET /Content/Utility/TickerUpdate HTTP/1.1", host: "dev.serverurl.ca", referrer: "http://dev.serverurl.ca/somefolder"