一旦工作,那就要努力的干,聪明的干,快速的干——用省下来的时间干自己喜欢干的事情。!

nginx前端服务器做反向代理后,让后端机器能获取到客户端IP和服务器HTTP_HOST

WEB服务器 lampnick 5052℃ 0评论

使用nginx做一个最外层的前端服务器(A服务器),然后将所有请求转发给docker内的后端nginx处理(B服务器),

A服务器配置:

listen   80;
server_name www.test.com
location /
 {
      proxy_pass http://127.0.0.1:8008;
 }

当浏览器请求www.test.com时,

PHP程序处理的时候采用类似$_SERVER['HTTP_HOST']方式获取服务器的域名和端口。此时获取到的是127.0.0.1:8008,并不能获取到www.test.com

只需要在上述配置的location中加入一行代码即可解决:

listen   80;
server_name www.test.com
location /
 {
      proxy_pass http://127.0.0.1:8008;
      proxy_set_header Host $host;
 }

需要获取客户端真实IP加入以下参数即可

listen   80;
server_name www.test.com
location /
 {
      proxy_pass http://127.0.0.1:8008;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header X-Forwarded-Host $server_name;
      proxy_set_header X-Real-IP $remote_addr;
 }

转载请注明:MitNick » nginx前端服务器做反向代理后,让后端机器能获取到客户端IP和服务器HTTP_HOST

喜欢 (9)or分享 (0)
头像
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址