node.js - Node express 项目绑定域名后 获取不到客户ip公网了
天蓬老师
天蓬老师 2017-04-17 13:11:08
0
3
549

node 代码

var express = require('express'); var app = express(); var os = require('os'); var http = require('http'); var cors = require('cors'); app.use(cors()); app.get('/', cors(),function(req, res){ var ip = getClientIp(req).match(/\d+\.\d+\.\d+\.\d+/); console.log(ip); }); function getClientIp(req) { return req.headers['x-forwarded-for'] || req.connection.remoteAddress || req.socket.remoteAddress || req.connection.socket.remoteAddress; } app.listen(8081); console.log('listening on port http://localhost:8081/');

nginx 代理

server { listen 80; server_name nnn.com; location / { proxy_set_header X-real-IP $remote_addr; proxy_pass http://127.0.0.1:8081; } access_log /home/wwwlogs/nnn.com.log access; }

直接访问服务器的ip 是正常返回客户端的ip

而访问 nginx 代理转向 的域名地址 返回的ip 却是 127.0.01

nginx 转向的 proxy_pass 地址是多少 ,返回的就是多少

node 如何更好的绑定域名呢?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆 (3)
小葫芦

req.ip
http://expressjs.com/en/4x/api.html#req.ip

trust proxy
http://expressjs.com/en/4x/api.html#trust.proxy.options.table

nginx.conf

location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
    迷茫

    终有完成了

    修改 nginx

    server { listen 80; server_name nnn.com; location / { proxy_pass http://localhost:8081; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; } access_log /home/wwwlogs/nnn.com.log access; }
      迷茫

      可以参考我的文章:https://segmentfault.com/a/1190000005797170,拿走不谢。

        最新下載
        更多>
        網站特效
        網站源碼
        網站素材
        前端模板
        關於我們 免責聲明 Sitemap
        PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!