Nginx&同一个Docker容器中的节点

时间:2015-06-23 05:58:38

标签: node.js nginx docker reverse-proxy

我知道这违反了公认的惯例,但我需要在相同 Docker容器内的node.js服务器旁边运行Nginx。我没有问题旋转容器并让Nginx和Node一起工作。 Nginx适用于容器暴露的端口443。节点服务器侦听端口8080并由Nginx反向代理

location /node/index.js {
 proxy_pass http://127.0.0.1:8080;
 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服务器上的资源https://example.com/text.txt非常简单
  • 启动Nodejs服务器nodejs index.js & disown,该服务器已配置为向日志文件输出一些诊断消息。这些消息告诉我服务器工作正常。
  • 我可以从Docker容器内部Telnet到端口8080 - 再一次表明节点服务器支持并运行
  • 精确相同的配置,但Nginx在“真正的”服务器上运行,并且Node在同一服务器上运行,可以顺利运行节点服务器。
  • 但是,当我尝试访问在Nginx Docker容器内运行的节点服务器时,比如https://example.com/node/index.js我收到404错误。

检查我的Nginx日志显示该请求确实在其Docker主机内到达Nginx。但是,检查节点服务器日志文件表示请求永远不会被转发。

我不清楚为什么会发生这种情况。从Nginx在Docker容器中运行时我可以看出,它无法充当同一容器内运行的Node的反向代理。

为了更好的衡量,我尝试了EXPOSing Node端口,8080并使用-p 8080:8080 -p 443:443启动Docker容器,但这没有任何区别。我非常感谢任何能够对这里发生的事情有所了解的人。

0 个答案:

没有答案