因爲服務器配置了Nginx的反向代理,在ExpressJS中沒法獲取到真實的IP地址。本文就介紹瞭如何配置Nginx以及ExpressJS使其能夠顯示用戶的真實地址。html
修改你的配置文件nginx
server { listen 80; server_name XXX.YYY.ZZZ; location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Host $remote_addr; proxy_pass http://127.0.0.1:3003/; } }
重要的部分就是proxy_set_header
部分。express
在app.js
中的靠前位置,添加:服務器
app.set('trust proxy', 'loopback');
經過上述的設置,如今你使用req.ip
或req.ips
就能夠獲取到用戶真實的IP地址了。app
Express behind proxies (官網關於Proxy的文檔)ide
Forward IP Addresses with NGINX Proxy (介紹Nginx中Proxy設置的文章)oop