nginx proxy模塊


環境:

  user:192.168.100.169

  nginx代理:192.168.100.175

  tomcat:192.168.100.175

  域名:www.vijay.com  --->192.168.100.175

1.nginx配置

    server {
        listen 80;
        server_name www.vijay.com;
             
        location / {
            proxy_pass http://192.168.100.175:8080/;
            proxy_redirect off;
 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_connect_timeout 90;
        proxy_send_timeout 90;
        proxy_read_timeout 90;
        proxy_buffer_size 4k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;
        proxy_redirect off;
        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_user_agent $http_user_agent;    //判斷訪問端是蘋果,安卓,win還是mac

        proxy_next_upstream http_502 http_504 http_503 error timeout invalid_header;  //請求出錯后,轉向下一個節點

        }
        location /status {
                stub_status on; 
                access_log on;
        }
    }
proxy_pass http://192.168.10.10;  //用於指定反向代理的服務器池
proxy_set_header Host $hoxt;      //當后端web服務器也配置了多個虛擬主機時,需要用該header來區分反向代理哪個主機名
prox_set header X-Forwarded-For $remote_addr    //如果后端web服務器上的程序需要獲取用戶ip,可以從該header頭獲取
proxy_set_header http_user_agent $http_user_agent;    //判斷訪問端是蘋果,安卓,win還是mac
proxy_body_buffer_size            //用於指定客戶端請求主體緩沖區大小,可以理解為先保存到本地在傳給用戶
proxy_connect_timeout          //表示與后端服務器連接的超時時間,即發起握手等候響應的超時時間
proxy_send_timeout          //表示后端服務器的數據回傳時間,即在規定的時間內后端服務器必須傳完所有的數據,否則,nginx將斷開這個連接
proxy_read_timeout          //設置nginx從代理的后端服務器獲取信息的時間,表示連接建立成功之后,nginx等待后端服務器的響應時間,其實nginx已經進入后端的排隊之中等候處理
proxy_buffer_size          //設置緩沖區大小,默認,該個、緩沖區大小等於指令proxy_buffers設置的大小
proxy_buffers              //設置緩沖區的數量和大小。nginx從代理的后端服務器獲取的響應信息,會保存到緩沖區
proxy_busy_buffers_size          //用於設置系統忙碌時可以使用的proxy_buffers大小,官方推薦為proxy_buffers*2
proxy_tmep_file_write_size      //指定proxy緩存臨時文件的大小
proxy_next_upstream http_502 http_504 http_503 error timeout invalid_header;  //請求出錯后,轉向下一個節點

 

2.web服務器端日志配置(如tomcat)

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h  %{X-Forwarded-For}i %{X-Real-IP}i %{Host}i %{http_user_agent}i  %l %u %t &quot;%r&quot; %s %b" />
3.log日志:
192.168.100.175  192.168.100.169 192.168.100.169  www.vijay.com  - - [11/May/2016:17:21:27 +0800] "GET /bg-upper.png HTTP/1.0" 304 -
192.168.100.175  192.168.100.169 192.168.100.169  www.vijay.com  - - [11/May/2016:17:21:27 +0800] "GET /bg-nav.png HTTP/1.0" 304 -
192.168.100.175  192.168.100.169 192.168.100.169  www.vijay.com  - - [11/May/2016:17:21:27 +0800] "GET /asf-logo.png HTTP/1.0" 304 -
192.168.100.175  192.168.100.169 192.168.100.169  www.vijay.com  - - [11/May/2016:17:21:27 +0800] "GET /bg-button.png HTTP/1.0" 304 -
192.168.100.175  192.168.100.169 192.168.100.169  www.vijay.com  - - [11/May/2016:17:21:27 +0800] "GET /tomcat.png HTTP/1.0" 304 -
192.168.100.175  192.168.100.169 192.168.100.169  www.vijay.com  - - [11/May/2016:17:21:27 +0800] "GET /bg-middle.png HTTP/1.0" 304 -
192.168.100.175  192.168.100.21 192.168.100.21  192.168.100.175 Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13D15 Safari/601.1  - - [12/May/2016:19:15:56 +0800] "GET /bg-button.png HTTP/1.0" 304 -
192.168.100.175  192.168.100.21 192.168.100.21  192.168.100.175 Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13D15 Safari/601.1  - - [12/May/2016:19:15:56 +0800] "GET /bg-middle.png HTTP/1.0" 304 -
192.168.100.175  192.168.100.21 192.168.100.21  192.168.100.175 Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13D15 Safari/601.1  - - [12/May/2016:19:15:56 +0800] "GET /asf-logo.png HTTP/1.0" 304 -
192.168.100.175  192.168.100.21 192.168.100.21  192.168.100.175 Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13D15 Safari/601.1  - - [12/May/2016:19:15:56 +0800] "GET /bg-upper.png HTTP/1.0" 304 -


192.168.100.175  192.168.100.108 192.168.100.108  192.168.100.175 Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; HUAWEI G750-T00 Build/HuaweiG750-T00) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30  - - [12/May/2016:19:19:01 +0800] "GET / HTTP/1.0" 200 11230
192.168.100.175  192.168.100.108 192.168.100.108  192.168.100.175 Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; HUAWEI G750-T00 Build/HuaweiG750-T00) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30  - - [12/May/2016:19:19:01 +0800] "GET /tomcat.css HTTP/1.0" 200 5576
192.168.100.175  192.168.100.108 192.168.100.108  192.168.100.175 Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; HUAWEI G750-T00 Build/HuaweiG750-T00) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30  - - [12/May/2016:19:19:01 +0800] "GET /tomcat.png HTTP/1.0" 200 5103

192.168.100.175 192.168.100.169 192.168.100.169 192.168.100.175 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) - - [12/May/2016:19:25:28 +0800] "GET /bg-button.png HTTP/1.0" 304 -
192.168.100.175 192.168.100.169 192.168.100.169 192.168.100.175 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) - - [12/May/2016:19:25:28 +0800] "GET /asf-logo.png HTTP/1.0" 304 -
192.168.100.175 192.168.100.169 192.168.100.169 192.168.100.175 Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) - - [12/May/2016:19:25:28 +0800] "GET /bg-middle.png HTTP/1.0" 304 -
192.168.100.175 192.168.100.165 192.168.100.165 192.168.100.175 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11) AppleWebKit/601.1.56 (KHTML, like Gecko) Version/9.0 Safari/601.1.56 - - [12/May/2016:19:27:51 +0800] "GET / HTTP/1.0" 200 11230
192.168.100.175 192.168.100.165 192.168.100.165 192.168.100.175 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11) AppleWebKit/601.1.56 (KHTML, like Gecko) Version/9.0 Safari/601.1.56 - - [12/May/2016:19:27:51 +0800] "GET /tomcat.css HTTP/1.0" 200 5576
192.168.100.175 192.168.100.165 192.168.100.165 192.168.100.175 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11) AppleWebKit/601.1.56 (KHTML, like Gecko) Version/9.0 Safari/601.1.56 - - [12/May/2016:19:27:51 +0800] "GET /tomcat.png HTTP/1.0" 200 5103
192.168.100.175 192.168.100.165 192.168.100.165 192.168.100.175 Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11) AppleWebKit/601.1.56 (KHTML, like Gecko) Version/9.0 Safari/601.1.56 - - [12/May/2016:19:27:51 +0800] "GET /bg-nav.png HTTP/1.0" 200 1401


%h :192.168.100.175
%{X-Forwarded-For}i:192.168.100.169
%{X-Real-IP}i:192.168.100.169
%{Host}i:www.vijay.com
%{http_user_agent}i:Mozilla/5.0 (iPhone; CPU iPhone OS 9_2_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13D15 Safari/601.1 
                     Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; HUAWEI G750-T00 Build/HuaweiG750-T00) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 

備注:

X-Forwarded-For 和 X-Real-IP 的區及獲取客戶端的ip? 
一般來說,X-Forwarded-For是用於記錄代理信息的,每經過一級代理(匿名代理除外),代理服務器都會把這次請求的來源IP追加在X-Forwarded-For中 來自4.4.4.4的一個請求,header包含這樣一行 X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3 代表 請求由1.1.1.1發出,經過三層代理,第一層是2.2.2.2,第二層是3.3.3.3,而本次請求的來源IP4.4.4.4是第三層代理。
而X-Real-IP,一般只記錄真實發出請求的客戶端IP,上面的例子,如果配置了X-Read-IP,將會是 X-Real-IP: 1.1.1.1 所以 ,如果只有一層代理,這兩個頭的值就是一樣的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM