不通過瀏覽器獲取公網(wǎng) IP
一.不通過瀏覽器獲取公網(wǎng) IP
有的時候我們的計算機處于受限狀態(tài),不能使用瀏覽器或者 HTTP 協(xié)議。
也就不能使用類似:
curl ifconfig.io之類的命令來獲取公網(wǎng) IP。
但其實可以不通過瀏覽器,而是通過 DNS 來獲取公網(wǎng) IP,使用如下命令:
dig @ns1.google.com TXT o-o.myaddr.l.google.com +short# 或者:nslookup -type=TXT o-o.myaddr.l.google.com ns1.google.com
其它的 DNS 提供商也可以:
# OpenDNSdig myip.opendns.com @resolver1.opendns.com +short# 或者:nslookup myip.opendns.com resolver1.opendns.com
# Akamaidig whoami.akamai.net. @ns1-1.akamaitech.net. +short# 或者:nslookup whoami.akamai.net. ns1-1.akamaitech.net.
這些命令會返回公網(wǎng) IP 的原理是:
Google 等公司會編寫程序,監(jiān)聽在它們類似 o-o.myaddr.l.google.com 的地址上。只要有請求,就會將請求的源 IP 地址作為數(shù)據(jù)直接返回。
二.nginx設置反向代理,如何獲取真實客戶端ip
upstream這個模塊提供一個簡單方法來實現(xiàn)在輪詢和客戶端IP之間的后端服務器負荷平衡。upstream abc.com {server 127.0.0.1:8080;server 127.0.0.1:80;server 127.0.0.1:8000;}server {listen 80;server_name www.test.com;location / {proxy_pass http://abc.com;proxy_set_header Host $host;#保留代理之前的hostproxy_set_header X-Real-IP $remote_addr;#保留代理之前的真實客戶端ipproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;#在多級代理的情況下,記錄每次代理之前的客戶端真實ipproxy_set_header X-Forwarded-Proto $scheme;proxy_redirect default;#指定修改被代理服務器返回的響應頭中的location頭域跟refresh頭域數(shù)值}}
各參數(shù)的含義如下所示。
Host包含客戶端真實的域名和端口號;
X-Real-IP表示客戶端真實的IP;
X-Forwarded-For這個Header和X-Real-IP類似,但它在多層代理時會包含真實客戶端及中間每個代理服務器的IP
X-Forwarded-Proto表示客戶端真實的協(xié)議(http還是https);
后記:
評論
圖片
表情
