zoukankan      html  css  js  c++  java
  • Nginx*导致PHP获取不到正确的HTTP_HOST,SERVER_NAME,客户端IP的解决方法

    贴上的Nginx配置

     
    upstream abc.com {
            server 10.141.8.55:8005;
            server 10.141.8.55:8006;
    }
    server {
            listen 80;
            server_name www.xxx.com;
            log_not_found off;
            access_log  /var/log/nginx/html-access.log  main;
            charset utf-8;
            location / {
                    proxy_pass http://abc.com;
            }
    }
     

    echo $_SERVER['HTTP_HOST'];

    输出abc.com

    仔细查看Nginx配置,很容易发现PHP获取到的HTTP_HOST是Nginx代理过来的。

    解决的办法有两种

    方法一,将abc.com改成你www.xxx.com

    不过这种方法还不是很好,如果server_name有多个怎么办呢

    所以

    方法二

    在location/{}加上 proxy_set_header    Host             $host;

    既然HTTP_HOST有问题,那其他客户端的信息也肯定是不对的。比如客户端IP。

    所以还得加上其他配置,完整的Nginx配置如下

     
    upstream abc.com {
            server 10.141.8.55:8005;
            server 10.141.8.55:8006;
    }
    server {
            listen 80;
            server_name www.xxx.com;
            log_not_found off;
            access_log  /var/log/nginx/html-access.log  main;
            charset utf-8;
            location / {
                    proxy_pass http://abc.com;
                    proxy_set_header    Host             $host;
                    proxy_set_header    X-Real-IP        $remote_addr;
                    proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
                    proxy_set_header    HTTP_X_FORWARDED_FOR $remote_addr;
                    proxy_redirect      default;
            }
    }
     
  • 相关阅读:
    linux安装php
    linux安装apache
    linux文件目录结构
    第五篇 -- 学习第四天打卡20190616
    第四篇 -- 学习第三天打卡20190615
    第一篇 -- 《每天读一点经济学常识 》 --于台风
    第三篇 -- 学习第二天打卡20190614
    第二篇--学习第一天打卡20190613
    第一篇--程序员如何学英语
    第二篇--无题
  • 原文地址:https://www.cnblogs.com/mafeng/p/8033665.html
Copyright © 2011-2022 走看看