当前位置: 首页 > 知识库问答 >
问题:

如何将请求IP从NGINX转发到节点。js应用程序?

屈畅
2023-03-14

我有NGINX作为反向代理运行,它将所有超文本传输协议和https流量转发到我的node.js应用程序,该应用程序监听localhost: port

然而,我的问题是节点。js应用程序将所有传入请求视为来自::ffff:127.0。0.1

如何更改NGINX配置,使真正的IP能够通过并转发到节点。js应用程序?

server {
    listen 80;
    listen [::]:80;
    listen 443;
    listen [::]:443;

    root /var/www/example.com/html;
    index index.html index.htm;

    server_name example.com;

location / {
proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://localhost:myport;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
}

 # Requests for socket.io are passed on to Node on port x
  location ~* \.io {
  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;

  proxy_pass http://localhost:myport;
  proxy_redirect off;

  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
}


}

编辑:快车。js/node。js应用程序处理请求。ip和应用程序。启用(“信任代理”);启动时

共有2个答案

巫马星雨
2023-03-14

考虑到以上NGINX配置,这解决了它。

var ip = req.headers['x-real-ip'] || req.connection.remoteAddress;
邹阳
2023-03-14

表示js官方网站有这个指南。说明:

  1. app.set(信任代理,true)in js.
  2. proxy_set_headerX-转发-对于$remote_addr在nginx.conf
  3. 您现在可以从req.ip属性
  4. 读取客户端IP地址
 类似资料:
  • 问题内容: 有人可以解释如何使用request.js池哈希吗? 在github上的注释说,这大约池: 池-包含这些请求的代理的哈希对象。如果省略,该请求将使用设置为节点的默认maxSockets的全局池。 pool.maxSockets-包含池中最大套接字数量的整数。 我有用于编写CouchDB实例的代码(请注意问号)。基本上,任何连接到我的Node服务器的用户都将彼此独立地写入数据库: 什么是高

  • 剪辑过,我剪短了。 代码变量被赋值 首先需要用get请求触发php脚本,输出不应该保存 然后,当上面的请求完成后,将get请求发送到并将响应保存到一个变量, 对于https://flower.nyaizhel.ml/fun/carbon/shorturl.php?short&code=ii,它应该是6,请参阅url 我试着取,没有结果

  • 问题内容: 我有两个Web应用程序,分别是web1和web2。我想将请求从web1 / servlet1转发到web2 / servlet2。可能吗?请帮忙! 问题答案: 这是一个两步过程: 掌握代表 获得从对应 因此,从内部开始是这样的: 所有这些都有一个很大的警告- 容器可能未配置为允许跨上下文转发,因为这存在潜在的安全风险。如果是这种情况,将返回。

  • 我有一个小应用程序(HTML表单、servlet作为控制器和jsp文件),我试图弄清楚为什么我不能将请求从servlet转发到jsp文件。 问题是从html提交后,显示“HTTP状态404” null 谢谢! 项目层次结构:http://s23.postimg.org/kgt7r7lwb/capture.jpg main.html: 更新:问题可能出在Controller.java。当我尝试下面的

  • 我正在使用谷歌云视觉检测图像上的文本。这种方法在80%的情况下有效。另外20%,我得到了这个错误: 当我在谷歌上搜索这个问题时,似乎我需要发送特定的标题和我的请求来解决这个问题,基本上就像这里指定的:https://cloud.google.com/vision/docs/ocr#specify_the_language_optional 但是,我不知道如何用我正在使用的Node.js代码发送这些

  • 问题内容: 在我的情况下,我需要转发到另一个端点的请求。在我的机器中,有两个服务器php和node.js服务器。Node.js就像一个“中间人”,PHP服务器必须以相同的方式工作。 Node.js服务器代码 当此服务器在端口3000中收到获取请求时,它将处理请求信息,并且必须将同一请求转发到另一个端点。 例如: 获取localhost:3000 / track?param1 = 1&param2