现在的位置: 首页 > 综合 > 正文

nginx反向代理,request.getServerName()的问题

2017年01月05日 ⁄ 综合 ⁄ 共 675字 ⁄ 字号 评论关闭

前几天配置了nginx的反向代理。

可是有个问题。 在项目中,写request.getServerName()的时候,总是返回的127.0.0.1
这个地址。

折腾的好久,今天搜了搜,发现是配置的原因, 记载一下。


我以前的配置:

       location / {
            proxy_pass http://127.0.0.1:18080/;
			 
        }

在页面中使用 getservername得到的结果:


可见 ,结果是 应用的域名和端口。

我的目的是:得到 代理服务器的地址和端口。而不是实际应用的地址和端口。

对配置文件做如下修改:

        location / {
            proxy_pass http://127.0.0.1:18080/;
			proxy_set_header Host $host;
        }

重启服务:  nginx -s reload 

再次访问:


我是在虚拟机环境中,配置的host-only 上网,因此访问宿主机器 应该通过 192.168.137.1 这个ip访问宿主的虚拟出来的网卡。

通过上图可见,反向代理后,返回的信息,不再是配置的地址,而是客户端实际访问的代理服务器的地址了。

 前辈的文章中说:

nginx反向代理配置时,一般会添加下面的配置:
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header REMOTE-HOST $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

只是用了第一个, 后面的三个,还没来得及研究。 等忙完这段~~~

抱歉!评论已关闭.