美文网首页Nginx
nginx Proxy_set_header Host $Hos

nginx Proxy_set_header Host $Hos

作者: Hooke_718b | 来源:发表于2019-01-19 17:00 被阅读0次

    需求:

    为一个 web 站点绑定了多个域名,但不想将其直接以 80 端口暴露出去,而是通过 nginx 的方式暴露出去(因为服务器上还装有其他的 web 应用)。

    希望通过www.aa.com,www.bb.com都能直接访问到此站点。

    也许在这里,对于大多数的网站来说,只需要简单的配置一个反向代理,用一个proxy_pass就好。

    不过在这个时候,如果反向代理地址配置的是http://localhost:8080,取到的主机地址就是localhost,而不是我实际访问的地址,比如我用www.aa.com访问这个站点,在 web 程序里取到的Request.Url.Host就是localhost

    但是这个 web 站点,还又想取出Request.Url.Host这个信息(因为我要根据它来识别关键信息),也就是要知道访问者访问的是哪个域名。这个时候就可以用 nginx 的proxy_set_header Host $host来处理。

    不过,不是 nginx 这一块配置好就万事大吉了,还要在那个 web 站点上,将对应的域名也绑定好才可以正常访问,否则会 nginx 就返回一个错误页面了。也就是说,那个 web 站点不光要绑定http://localhost:8080这一个,还要绑定http://www.aa.comhttp://www.bb.com

    配置操作:

    IIS:
    站点 A 绑定地址如下:

    • http://localhost:8080
    • http://www.aa.com:8080
    • http://www.bb.com:8080

    IP 绑定最好就用*就好了。

    nginx:

    
    server{
        listen              80;
        server_name         www.aa.com www.bb.com;
        location / {
            proxy_pass http://localhost:8080;
            proxy_set_header   Host    $host;
            proxy_set_header   X-Real-IP   $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
    
    

    相关文章

      网友评论

        本文标题:nginx Proxy_set_header Host $Hos

        本文链接:https://www.haomeiwen.com/subject/qbjzdqtx.html