最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Nginx作為反向代理時傳遞客戶端IP的設置方法

 更新時間:2014年08月16日 19:34:15   投稿:mdxy-dxy  
因為nginx的優(yōu)越性,現在越來越多的用戶在生產環(huán)境中使用nginx作為前端,不管nginx在前端是做負載均衡還是只做簡單的反向代理,都需要把日志轉發(fā)到后端real server,以方便我們檢查程序的各種故障

nginx默認配置文件里面是沒有進行日志轉發(fā)配置的,這個需要我們自己手動來操作了,當然后端的real server不同時操作方法是不一樣的,這里我們分別例舉幾種情況來說明一下。

nginx做前端,轉發(fā)日志到后端nginx服務器:

因為架構的需要采用多級 Nginx 反向代理,但是后端的程序獲取到的客戶端 IP 都是前端 Nginx 的 IP,問題的根源在于后端的 Nginx 在 HTTP Header 中取客戶端 IP 時沒有取對正確的值。
同樣適用于前端是 Squid 或者其他反向代理的情況。

首先前端的 Nginx 要做轉發(fā)客戶端 IP 的配置:

location / {
proxy_pass http://localhost:8000;
 
# Forward the user's IP address to Rails
proxy_set_header X-Real-IP $remote_addr;
# needed for HTTPS
# proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}

后端的 Nginx 需要安裝一個 Module: NginxHttpRealIpModule,編譯的時候默認不包含此 Module,需要重新編譯安裝 Nginx,configure 的時候加上 –with-http_realip_module,Nginx 升級或者添加/刪除 Module 時支持熱切換,可以避免中斷服務。

升級后配置 NginxHttpRealIpModule,set_real_ip_from 就是指前端 Nginx 或者 Squid 的 IP:

location / {
proxy_pass http://localhost:8000;
 
# Forward the user's IP address to Rails
proxy_set_header X-Real-IP $remote_addr;
# needed for HTTPS
# proxy_set_header X_FORWARDED_PROTO https;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
# NginxHttpRealIpModule
set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.2.1;
real_ip_header X-Real-IP;
}

最后記得 reload Nginx config

nginx做前端,轉發(fā)日志到后端apache服務器:

apache日志中默認有%h來指定來訪客戶端你的ip地址,但是使用了nginx代理上網則%h獲得的ip地址會不準。
這就需要對nginx 和apache的配置文件設定 X-Forwarded-For 參數來獲取客戶端真實的ip地址。對于使用了反向代理的客戶端,跟蹤真實的ip地址。
/usr/nginx/conf/nginx.conf 添加以下參數:

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;

同時修改:

server {
   listen 80;
   server_name 域名 ;
   proxy_redirect off; 
    location / {
     proxy_set_header  X-Forwarded-For $remote_addr;
     proxy_set_header  X-Forwarded-Host $server_name;
     proxy_set_header Host $host;
     proxy_pass http://域名;
   }
   access_log off;
 }

重啟nginx使配置生效。
 
apache端需要安裝一個第三方模塊"mod_rpaf"了, 官方網站: http://stderr.net/apache/rpaf/

wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz 
tar zxvf mod_rpaf-0.6.tar.gz 
cd mod_rpaf-0.6 
/opt/apache/bin/apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

修改apache配置 /usr/apache2/conf/httpd.conf

LoadModule rpaf_module modules/mod_rpaf-2.0.so 
RPAFenable On 
RPAFsethostname On 
RPAFproxy_ips ip地址  #Nginx所在服務器的IP
RPAFheader X-Forwarded-For

重啟apache 查看日志就可以看見日志中已經獲得到真實ip了。

nginx做前端,轉發(fā)日志到后端IIS服務器:

  iis 如果放在反向代理后面,日志里的ip是反向代理服務器的ip,不是真正用戶的ip,想要記錄用戶的ip要做兩件事。

1.在反向代理設置X-Forwarded-For段,以下為nginx下的配置示例:

server
{
  location
 ?。?
  ……
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  ……
 ?。?
}

2.在iis站點上安裝下面這個isapi filter,這東西是在f5的開發(fā)論壇上找到的,按開發(fā)者的話說,是為了解決iis放在f5后記錄不到用戶ip的問題,-_-# 管他前端是f5還是nginx還是squid還是haproxy。都可以用。應該不錯。裝完之后重啟下iis就搞定了。
   http://devcentral.f5.com/weblogs/Joe/archive/2009/08/19/x_forwarded_for_log_filter_for_windows_servers.aspx
   回頭看下iis的日志,里面的ip已經是用戶的真實ip了。

相關文章

  • 通過瀏覽器查看nginx服務器狀態(tài)配置方法

    通過瀏覽器查看nginx服務器狀態(tài)配置方法

    這篇文章主要介紹了通過瀏覽器查看nginx服務器狀態(tài)配置方法,本文講解開啟nginx-status的配置方法,并對服務器的參數做了詳細講解,需要的朋友可以參考下
    2015-04-04
  • nginx安裝vsftpd最簡流程

    nginx安裝vsftpd最簡流程

    給大家分享一下在nginx環(huán)境中最簡單的安裝vsftpd的流程,初學者跟著學習下吧。
    2017-12-12
  • windows下nginx如何操作命令

    windows下nginx如何操作命令

    這篇文章主要介紹了windows下nginx如何操作命令,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Nginx權限控制文件的預覽和下載方式

    Nginx權限控制文件的預覽和下載方式

    這篇文章主要介紹了Nginx權限控制文件的預覽和下載方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 詳解nginx 代理多個服務器(多個server方式)

    詳解nginx 代理多個服務器(多個server方式)

    本篇文章主要介紹了詳解nginx 代理多個服務器(多個server方式),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • nginx配置文件不使用緩存的方法

    nginx配置文件不使用緩存的方法

    使用Nginx作為Web緩存服務器,能有效減少數據傳輸、節(jié)省網絡流量、加快響應速度、減輕服務器壓力、提高服務端可用性,本文就來介紹一下nginx配置文件不使用緩存的方法,感興趣的可以了解一下
    2024-11-11
  • Nginx配置防盜鏈的完整步驟

    Nginx配置防盜鏈的完整步驟

    這篇文章主要給大家介紹了關于Nginx配置防盜鏈的完整步驟,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Nginx具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • nginx禁止dedecms目錄php執(zhí)行權限

    nginx禁止dedecms目錄php執(zhí)行權限

    nginx禁止dedecms目錄php執(zhí)行權限,找到配置fastcgi.conf文件,一般在/usr/local/nginx/conf/下面,修改如下
    2014-01-01
  • 基于Nginx+lua實現簡單的XSS攻擊攔截

    基于Nginx+lua實現簡單的XSS攻擊攔截

    WAF即web應用防火墻,Nginx是一個主流的代理服務,除了本身的Nginx日志,作為用戶肯定也支持對請求信息進行操作,?很多都是通過在代理服務器上掛載規(guī)則特征,實現軟件層面的軟WAF進行WEB防護,本文主要給大家介紹了Nginx+Lua實現一個簡單的XSS攻擊攔截,需要的朋友可以參考下
    2024-01-01
  • Nginx代理MySQL實現通過域名連接數據庫的詳細教程

    Nginx代理MySQL實現通過域名連接數據庫的詳細教程

    我們的生產環(huán)境基本上都部署在云服務器上,例如應用服務器、MySQL服務器等,如果MySQL服務器直接暴露在公網,就會存在很大的風險,為了保證數據安全,MySQL服務器的端口是不對外開放的,所以本文介紹了Nginx代理MySQL實現通過域名連接數據庫的詳細教程
    2024-07-07

最新評論

泸定县| 麻城市| 锦州市| 确山县| 灵武市| 华蓥市| 岫岩| 福建省| 个旧市| 雅安市| 瓦房店市| 常州市| 东源县| 林州市| 忻州市| 中卫市| 吉水县| 绵阳市| 启东市| 涪陵区| 深州市| 长阳| 石景山区| 桂林市| 双峰县| 成安县| 屯留县| 邹平县| 衡水市| 昭通市| 五家渠市| 遵义县| 富民县| 朝阳县| 安塞县| 泌阳县| 台东县| 淳安县| 西畴县| 临沧市| 绥滨县|