Node.JS 应用程序未侦听分配的端口
Posted
技术标签:
【中文标题】Node.JS 应用程序未侦听分配的端口【英文标题】:Node.JS app not listening on assigned port 【发布时间】:2014-03-20 13:53:56 【问题描述】:我有一个 Node.JS 应用程序,它应该在启动时监听端口 4567。理想情况下,端口应该显示在 nmap 和 netstat 的输出中,但由于某种原因,它不是。
启动应用程序不会打开端口。没有任何内容被写入 /var/log/syslog 来告诉我发生了什么,并且应用程序日志文件中也没有任何内容。我正在使用 Forever 来启动应用程序。
有什么线索吗?
应用的配置文件如下所示
"base_url": "http://mysity",
"port": "4567",
"use_port": true,
"secret": "settee",
"bind_address": "0.0.0.0",
"database": "redis",
"redis":
"host": "127.0.0.1",
"port": "6379",
"password": "secret",
"database": "0"
,
"bcrypt_rounds": 12,
"upload_path": "uploads",
"relative_path": ""
Edit1:我正在使用 Forever 启动应用程序>“永远启动 app.js”
顺便说一句,我在本地安装上运行相同的应用程序,并且端口是打开的,我可以连接到应用程序,但不能连接到生产服务器上。
【问题讨论】:
显示一些代码如何启动服务器进程,我猜只是一个配置是不够的 已编辑帖子以显示用于启动应用程序的命令。希望这就是您想要的。 你在运行像 nginx 这样的反向代理吗? 最终,我会,但现在,不会。该应用程序的想法是使用 Nginx proxy_pass 从主站点的子域或子文件夹访问站点。现在,我只是尝试通过将端口附加到主站点的 url 来访问应用程序。配置 Nginx proxy_pass 会阻止端口显示在 nmap 和 netstat 的输出中吗? 你能贴出围绕“createServer()”的代码行吗? (应该在“app.js”或“server.js”中) 【参考方案1】:尝试运行像 Nginx 这样的反向代理。基本上它的作用是监听浏览器端口(通常为 :80 但 HTTPS 为 :443),并将来自这些端口的请求中继到配置文件中指定的端口。 (nginx.conf)。
所以你的 nginx.conf 可能看起来像:
server
listen 80;
server_name mysite.com www.mysite.com;
access_log /var/log/nginx/localhost.access.log;
location /
proxy_pass http://127.0.0.1:4567;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
【讨论】:
我实际上是在本地安装上运行该设置并且它按预期工作,我可以从 Nginx 安装的子文件夹访问它,即使我使用的是 Nginx 版本不正确支持 websocket。但即便如此,应用程序的端口仍然显示在 nmap 和 netstat 的输出中。当我在生产服务器上设置 Nginx 代理传递时,就像我在本地安装一样,我收到此错误:“connect() failed (111: Connection refused) while connection to upstream, client: 127.0.0.1, request :“GET / HTTP/1.1”,上游:“127.0.0.1:4567”,主机。” 如果您使用 Nginx,则无需再将 :4567 附加到 URL(假设 proxy_pass 设置正确)。只需输入mysite.com
,您的页面应该已经加载完毕。
[已编辑帖子] 删除了 : 和 4567 之间的空格
请注意,主站点是运行在 Nginx 和 php-fpm 上的 WP 站点,前面带有 Varnish。 Varnish 监听 80,而 Nginx 监听 8080。对于 Node 应用程序,我希望能够从子文件夹或子域访问它。我已经可以从本地安装中执行此操作,并且可以在 nmap 的输出中看到它的端口。请在ur1.ca/gw2gn查看与此相关的问题以上是关于Node.JS 应用程序未侦听分配的端口的主要内容,如果未能解决你的问题,请参考以下文章
侦听http 80端口时Node.js EACCES错误(权限被拒绝)[重复]
侦听http 80端口时Node.js EACCES错误(权限被拒绝)[重复]
如何在 Cpanel 中为 Node.js 应用程序配置端口?