我使用 nginx 作为在 IIS 7.5 上运行的网站的反向代理。网站已绑定到sub-1.foo.bar
。Nginx 配置如下:
server {
listen 80;
server_name sub.foo.bar;
location / {
proxy_pass http://sub-1.foo.bar;
proxy_set_header Host $host;
proxy_set_header X-Accel-Expires 0;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
我想要做的是将来自sub.foo.bar
(装有 nginx 的 linux 机器)的请求转发到sub-1.foo.bar
(装有 IIS 和我的网站的 windows 机器)。然而,发生的事情是
- 当我访问 sub.foo.bar 时,出现 404 页面
- 当我直接访问 sub-1.foo.bar 时,我的网站可以从 IIS 正常访问
- nginx 似乎可以正常转发请求到 Windows 机器
- 当我访问 sub.foo.bar 时,我无法从 IIS 日志中看到任何传入请求
- 当我在 IIS 上为 sub.foo.bar 添加绑定时,网站可以通过 nginx 正常代理
如果您能告诉我我的设置可能存在哪些问题,我将非常感激。谢谢!
答案1
尝试手动添加 proxy_set_header Host“sub-1.foo.bar”
答案2
- 当我在 IIS 上为 sub.foo.bar 添加绑定时,网站可以通过 nginx 正常代理
IIS 必须知道它应该响应名称 的请求sub.foo.bar
。否则它会将请求路由到默认网站。您可以通过创建绑定或创建/编辑您的网站来响应 来解决此问题sub.foo.bar
。