Nginx 反向代理和 IIS

Nginx 反向代理和 IIS

我使用 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

相关内容