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

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

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

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

我以前的配置:

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

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

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

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

对配置文件做如下修改:

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

重启服务:  nginx -s reload 

再次访问:

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

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

前辈的文章中说:

[html] [html]
[html]
  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;
[html] 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;

前几天配置了nginx的反向代理。 可是有个问题。 在项目中,写request.getServerName()的时候,总是返回的127.0.0.1 这个地址。 折腾的好久,今天搜了搜,发现是配置的原因, 记载一下。 我以前的配置: [html] location / { proxy_pass http://127.0.0.1:18080/; } 在页面中使用 getservername得到的结果: 可见 ,结果是 应用的域名和端口。 我的目的是:得到 代理服务器的地址和端口。而不是实际应用的地址和端口。 对配置文件做如下修改: [html] location / { proxy_pass http://127.0.0.1:18080/; proxy_set_header Host $host; } 重启服务: nginx -s reload 再次访问: 我是在虚拟机环境中,配置的host-only 上网,因此访问宿主机器 应该通过 192.168.137.1 这个ip访问宿主的虚拟出来的网卡。 通过上图可见,反向代理后,返回的信息,不再是配置的地址,而是客户端实际访问的代理服务器的地址了。 前辈的文章中说: [html] 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;
经验分享 程序员 微信小程序 职场和发展