一、nginx-real-ip是什麼?
nginx-real-ip是nginx的一個模塊,可以在反向代理伺服器和後端伺服器之間傳遞客戶端真實的IP地址,從而方便伺服器做進一步的操作。
在默認情況下,當使用nginx等反向代理伺服器時,伺服器會認為請求來自於代理伺服器IP地址,而不是客戶端的IP地址。這樣,當處理日誌、檢查黑名單等功能時,就會出現問題。因此,使用nginx-real-ip就可以進行客戶端真實IP地址的獲取。
二、如何安裝nginx-real-ip模塊?
在安裝nginx之前,需要確保已經安裝了pcre-devel和openssl-devel,否則將無法成功安裝。
# 下載nginx-real-ip模塊 wget https://github.com/flant/nginx-http-rdns/archive/v0.4.3.tar.gz # 解壓 tar zxvf v0.4.3.tar.gz # 下載nginx wget https://nginx.org/download/nginx-1.18.0.tar.gz # 解壓並進入目錄 tar zxvf nginx-1.18.0.tar.gz cd nginx-1.18.0 # 配置nginx,並添加nginx-real-ip模塊 ./configure --with-http_ssl_module --add-dynamic-module=../nginx-http-rdns-0.4.3 # 編譯並安裝 make && make install
三、如何配置nginx-real-ip模塊?
在nginx的配置文件中,需要添加如下代碼:
http { # ... real_ip_header X-Real-IP; set_real_ip_from 172.0.0.0/8; # ... }
其中:
real_ip_header:設置要獲取客戶端真實IP地址的HTTP頭
set_real_ip_from:設置代理伺服器IP地址
四、如何測試nginx-real-ip模塊?
可以通過訪問含有real-ip的測試頁面進行測試。首先,需要在nginx的配置文件中添加如下代碼:
server { listen 80; server_name test.com; location / { add_header X-Real-IP $remote_addr; return 200 'Hello World!'; } }
然後,可以使用curl命令測試:
curl -H "Host: test.com" -H "X-Forwarded-For: 1.2.3.4" http://127.0.0.1/ Hello World!
通過上面的測試,可以從返回的內容中看到real-ip獲取到了客戶端的真實IP地址。
五、nginx-real-ip的其他用途
除了獲取客戶端真實IP地址外,nginx-real-ip還可以用於:
防CC攻擊:可以根據客戶端IP地址進行限制或封鎖,從而保護網站的安全。
防黑名單:可以根據IP地址對黑名單進行識別和處理,從而過濾出壞人。
多網卡環境下的IP獲取:可以解決多網卡環境下客戶端IP獲取的問題。
六、總結
nginx-real-ip是nginx模塊中非常實用的一個模塊,可以簡單地解決反向代理伺服器和後端伺服器之間客戶端IP地址獲取的問題。同時,還可以應用於防CC攻擊、防黑名單等網站安全方面的操作。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/200321.html