亚洲免费成人网,99久久er这里只有精品17,欧美一级毛片兔费播放,亚洲国产精品久久日

  • 歡迎使用超級蜘蛛池(CJZZC)網站外鏈優化,收藏快捷鍵 CTRL + D

nginx反向代理, PHP获取客户端真实ip


nginx反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的連接請求,然后將請求轉發給內部網絡上的服務器,并將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。

1.jpg

一、概念

  • 正向代理:實現客戶端上網

  • 反向代理:代理訪問后端web服務器,

  • 區別:正向代理的對象是客戶端,反向代理的對象是服務器端

二、示例

    server {    
    	listen 80;
    	server_name www.test.com;
    	 location / {
    		proxy_pass http://192.9.191.31:80;
    		proxy_set_header Host $host;      #多級代理需要添加該配置          
    		proxy_set_header X-Real-IP $remote_addr;  #只有1級代理獲取客戶端真實ip
    		proxy_set_header X-Forwarded-For $remote_addr;   #多級代理獲取客戶端真實ip
    		proxy_http_version 1.1;         #這兩個最好也設置,HTTP協議中對長連接的支持是從1.1版本之后才有的
    		proxy_set_header Connection ""; 
    		proxy_redirect off;  
    		proxy_connect_timeout 600;
    		}
     
    	location /forum/ {
    		proxy_pass  http://192.168.1.52/bbs/test/;
    	}
    	#訪問http://www.nginx.com/forum/   代理服務器會把url資源替換成http://192.168.1.52/bbs/  對應192.168.1.52的資源路徑	是/usr/share/nginx/html/bbs/test/index.html
    	# 注意: 這里的proxy_pass結尾要有/
    
     
    	location   ~* \.(jpg|png|gif)$ {
    		proxy_pass http://192.168.1.52;
    	}
    	#注意: 如果是正則匹配, proxy_pass 的url結尾不能有/ 或者其他的后綴
     
    }

   

2.jpg

 三、常用指令

proxy_set_header:可以更改或添加客戶端的請求頭部信息內容,并轉發之后端服務器

#常用如下: 
proxy_set_header Host $host;  #添加HOST到報文頭部,其值為客戶端的URL, 
proxy_set_header X-Real-IP $remote_addr;   #把客戶端ip地址賦值給變量X-Real-IP, X-Real-IP的值是字符串類型; 客戶端可以是用戶客戶端或代理服務器    
proxy_set_header X-Forwarded-For $remote_addr;    # #把客戶端ip地址賦值給變量X-Forwarded-For, X-Forwarded-For的值是一個列表,客戶端可以是用戶客戶端或代理服務器 
proxy_set_header Connection ""; 

proxy_connect_timeout :配置nginx服務器與后端服務器嘗試建立連接的超時時間,默認為60秒
proxy_http_version:用于設置nginx提供代理服務的HTTP協議的版本:
proxy_redirect off;

四、PHP獲取客戶端IP地址方式

1、如果沒有使用代理服務器

    REMOTE_ADDR = 客戶端IP        
    HTTP_X_FORWARDED_FOR = 沒數值或不顯示    
    $ip = $_SERVER['REMOTE_ADDR'];   
    REMOTE_ADDR = 最后一個代理服務器 IP

2、使用透明代理

    HTTP_X_FORWARDED_FOR = 客戶端真實 IP (經過多個代理服務器時,這個值類似:221.5.252.160, 203.98.182.163, 203.129.72.215)

這類代理還會將客戶真實ip發送到請求對象,無法隱藏真實ip。

    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

3、使用普通匿名代理服務器

    REMOTE_ADDR = 最后一個代理服務器 IP    
    HTTP_X_FORWARDED_FOR = 代理服務器 IP (經過多個代理服務器時,這個值類似:203.98.182.163, 203.98.182.163, 203.129.72.215)

這樣就隱藏了客戶端的真實ip,但服務器會知道客戶端是通過代理服務器去訪問的。

4、使用欺騙性代理服務器

    REMOTE_ADDR = 代理服務器 IP        
    HTTP_X_FORWARDED_FOR = 隨機的 IP(經過多個代理服務器時,這個值類似:220.4.251.159, 203.98.182.163, 203.129.72.215)

5、使用高匿名代理

    REMOTE_ADDR = 代理服務器 IP       
    HTTP_X_FORWARDED_FOR = 沒數值或不顯示

使用這種代理時,不同瀏覽器不同設備會返回不同的ip頭信息,因此PHP使用$_SERVER["REMOTE_ADDR"] 、$_SERVER["HTTP_X_FORWARDED_FOR"] 獲取的值可能是空值也可能是“unknown”值。

PHP獲取ip代碼如下:

    function get_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;
    }

本文鏈接:http://m.sztqnet.com/article/607.html

超級蜘蛛工具

  • 網站鏈接HTTP狀態批量檢測_在線批量檢測網站鏈接狀態_超級蜘蛛池
  • 百度關鍵詞排名查詢_網站關鍵詞排名批量查詢_超級蜘蛛池
  • 百度收錄查詢_在線百度收錄批量查詢_超級蜘蛛池
  • 域名IP地址批量查詢_在線批量查詢網站IP地址_超級蜘蛛池
  • 超級外鏈發布工具_在線免費批量發布SEO外鏈_超級蜘蛛池
  • 網頁蜘蛛模擬抓取測試工具_超級蜘蛛工具_超級蜘蛛池