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

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

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

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


我以前的配置:

[html] view plain copy
  1. location / {  
  2.      proxy_pass http://127.0.0.1:18080/;  
  3.   
  4.  }  

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


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

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

对配置文件做如下修改:

[html] view plain copy
  1.      location / {  
  2.          proxy_pass http://127.0.0.1:18080/;  
  3. proxy_set_header Host $host;  
  4.      }  

重启服务:  nginx -s reload 

再次访问:



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

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



 前辈的文章中说:

[html] view plain copy
  1. nginx反向代理配置时,一般会添加下面的配置:  
  2.       proxy_set_header Host $host;  
  3.       proxy_set_header X-Real-IP $remote_addr;  
  4.       proxy_set_header REMOTE-HOST $remote_addr;  
  5.       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  

猜你喜欢

转载自blog.csdn.net/sinianliushui/article/details/80332764
今日推荐