不通過(guò)瀏覽器獲取公網(wǎng) IP
一.不通過(guò)瀏覽器獲取公網(wǎng) IP
有的時(shí)候我們的計(jì)算機(jī)處于受限狀態(tài),不能使用瀏覽器或者 HTTP 協(xié)議。
也就不能使用類似:
curl ifconfig.io之類的命令來(lái)獲取公網(wǎng) IP。
但其實(shí)可以不通過(guò)瀏覽器,而是通過(guò) DNS 來(lái)獲取公網(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.
這些命令會(huì)返回公網(wǎng) IP 的原理是:
Google 等公司會(huì)編寫程序,監(jiān)聽(tīng)在它們類似 o-o.myaddr.l.google.com 的地址上。只要有請(qǐng)求,就會(huì)將請(qǐng)求的源 IP 地址作為數(shù)據(jù)直接返回。
二.nginx設(shè)置反向代理,如何獲取真實(shí)客戶端ip
upstream這個(gè)模塊提供一個(gè)簡(jiǎn)單方法來(lái)實(shí)現(xiàn)在輪詢和客戶端IP之間的后端服務(wù)器負(fù)荷平衡。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;#保留代理之前的真實(shí)客戶端ipproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header HTTP_X_FORWARDED_FOR $remote_addr;#在多級(jí)代理的情況下,記錄每次代理之前的客戶端真實(shí)ipproxy_set_header X-Forwarded-Proto $scheme;proxy_redirect default;#指定修改被代理服務(wù)器返回的響應(yīng)頭中的location頭域跟refresh頭域數(shù)值}}
各參數(shù)的含義如下所示。
Host包含客戶端真實(shí)的域名和端口號(hào);
X-Real-IP表示客戶端真實(shí)的IP;
X-Forwarded-For這個(gè)Header和X-Real-IP類似,但它在多層代理時(shí)會(huì)包含真實(shí)客戶端及中間每個(gè)代理服務(wù)器的IP
X-Forwarded-Proto表示客戶端真實(shí)的協(xié)議(http還是https);
后記:
評(píng)論
圖片
表情
