nginx反向代理PHP获取客户端真实ip:删小米云服务器

時間:2023-12-29 12:51:40 作者:删小米云服务器 熱度:删小米云服务器
删小米云服务器描述::

nginx反向代理(Reverse Proxy)方式是指以代理服务器来承受internet上的连接请愿,然后将请愿转发给内部网络上的服务器,并将从服务器上得到的结局返回给internet上请愿连接的客户端,此时代理服务器对外就表现为一个服务器。

一、概念

  • 正向代理:实现客户端上网

  • 反向代理:代理拜访后端eb服务器,

  • 区别:正向代理的对象是客户端,反向代理的对象是服务器端

    • 二、示例

      server{
      	listen80;
      	server_nametest;
      	location{
      		proxy_pass19291913180;
      		proxy_set_headerHost$host;多级代理需要添加该配置
      		proxy_set_headerX-Real-IP$remote_addr;只有1级代理获取客户端真实ip
      		proxy_set_headerX-Forarded-For$remote_addr;多级代理获取客户端真实ip
      		proxy__version11;这两个最好也设置,HTTP协议中对长连接的支持是从11版本之后才有的
      		proxy_set_headerConnection;
      		proxy_redirectoff;
      		proxy_connect_timeout600;
      		}
      
      	locationforum{
      		proxy_pass192168152bbstest;
      	}
      	拜访nginxforum代理服务器会把url资源替代成192168152bbs对应192168152的资源路径	是usrsharenginxbbstestindex
      	留心:这里的proxy_pass结尾要有
      
      
      	location~*\(jpg|png|gif)${
      		proxy_pass192168152;
      	}
      	留心:假如是正则匹配,proxy_pass的url结尾不能有或者其他的后缀
      
      }

      三、常用指令

      proxy_set_header可以更换或添加客户端的请愿头部信息内容,并转发之后端服务器
      
      常用如下
      proxy_set_headerHost$host;添加HOST到报文头部,其值为客户端的URL,
      proxy_set_headerX-Real-IP$remote_addr;把客户端ip地址赋值给变量X-Real-IP,X-Real-IP的值是字符串类型;客户端可以是用户客户端或代理服务器
      proxy_set_headerX-Forarded-For$remote_addr;把客户端ip地址赋值给变量X-Forarded-For,X-Forarded-For的值是一个列表,客户端可以是用户客户端或代理服务器
      proxy_set_headerConnection;
      
      proxy_connect_timeout:配置nginx服务器与后端服务器尝试建立连接的超时时间,默以为60秒
      proxy__version:用于设置nginx提供代理服务的HTTP协议的版本:
      proxy_redirectoff;

      四、PHP获取客户端IP地址方式

      1、假如没有采用代理服务器

      REMOTE_ADDR=客户端IP
      HTTP_X_FORWARDED_FOR=没数值或不显示
      $ip=$_SERVER[REMOTE_ADDR];
      REMOTE_ADDR=最后一个代理服务器IP

      2、采用透彻代理

      HTTP_X_FORWARDED_FOR=客户端真实IP(途经多个代理服务器时,这个值相似:2215252160,20398182163,20312972215)

      这类代理还会将客户真实ip发送到请愿对象,无法隐藏真实ip。

      $ip=$_SERVER[HTTP_X_FORWARDED_FOR];

      3、采用普通匿名代理服务器

      REMOTE_ADDR=最后一个代理服务器IP
      HTTP_X_FORWARDED_FOR=代理服务器IP(途经多个代理服务器时,这个值相似:20398182163,20398182163,20312972215)

      这样就隐藏了客户端的真实ip,但服务器会知道客户端是通过代理服务器去拜访的。

      4、采用诱骗性代理服务器

      REMOTE_ADDR=代理服务器IP
      HTTP_X_FORWARDED_FOR=随机的IP(途经多个代理服务器时,这个值相似:2204251159,20398182163,20312972215)

      5、采用高匿名代理

      REMOTE_ADDR=代理服务器IP
      HTTP_X_FORWARDED_FOR=没数值或不显示

      采用这种代理时,差异阅读器差异器材会返回差异的ip头信息,因此PHP采用$_SERVER[REMOTE_ADDR]、$_SERVER[HTTP_X_FORWARDED_FOR]获取的值可能是空值也可能是“unknon”值。

      PHP获取ip代码如下:

      functionget_real_ip(){
      	判断服务器是否许可$_SERVER
      	if(isset($_SERVER)){
      		if(isset($_SERVER[HTTP_X_FORWARDED_FOR])){
      			$realip=$_SERVER[HTTP_X_FORWARDED_FOR];
      		}elseif(isset($_SERVER[HTTP_X_REAL_IP])){
      			$realip=$_SERVER[HTTP_X_REAL_IP];
      		}elseif(isset($_SERVER[HTTP_CLIENT_IP])){
      			$realip=$_SERVER[HTTP_CLIENT_IP];
      		}else{
      			$realip=$_SERVER[REMOTE_ADDR];
      		}
      	}else{
      		不许可就采用getenv获取
      		if(getenv(HTTP_X_FORWARDED_FOR)){
      			$realip=getenv(HTTP_X_FORWARDED_FOR);
      		}elseif(getenv(HTTP_X_REAL_IP)){
      			$realip=getenv(HTTP_X_REAL_IP);
      		}elseif(getenv(HTTP_CLIENT_IP)){
      			$realip=getenv(HTTP_CLIENT_IP);
      		}else{
      			$realip=getenv(REMOTE_ADDR);
      		}
      	}
      	return$realip;
      }
                      
                              

站長聲明:以上關於【nginx反向代理PHP获取客户端真实ip-删小米云服务器】的內容是由各互聯網用戶貢獻並自行上傳的,我們新聞網站並不擁有所有權的故也不會承擔相關法律責任。如您發現具有涉嫌版權及其它版權的內容,歡迎發送至:1@qq.com 進行相關的舉報,本站人員會在2~3個工作日內親自聯繫您,一經查實我們將立刻刪除相關的涉嫌侵權內容。