代理错误 502,在 apache2 服务器上运行节点 js 应用程序
Posted
技术标签:
【中文标题】代理错误 502,在 apache2 服务器上运行节点 js 应用程序【英文标题】:Proxy error 502 , run node js app on apache2 server 【发布时间】:2017-01-23 18:45:50 【问题描述】:我正在尝试在 Apache 服务器侦听端口 80 上运行 Node.js 应用程序 这是我的虚拟主机文件:
<VirtualHost *:80>
ServerName mikus
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ProxyPreserveHost On
ProxyPass /node http://localhost:8000/
ProxyPassReverse /node http://localhost:8000/
ErrorLog $APACHE_LOG_DIR/error.log
CustomLog $APACHE_LOG_DIR/access.log combined </VirtualHost>
这是我的 app.js 文件:
var express = require('express');
var app = express();
app.get('/node', function(req, res)
res.setHeader('Content-Type', 'text/plain');
res.end('Welcome apache');
);
app.listen(8000, 'localhost');
当我尝试在 'localhost/node' 或 ip_adress/node 上运行应用程序时,我遇到了 502 代理错误:代理服务器收到来自上游服务器的无效响应。 代理服务器无法处理请求 GET /node。
原因:DNS 查找失败:localhost
Apache/2.4.7 (Ubuntu) 服务器位于 127.0.0.1 端口 80。
谢谢。
【问题讨论】:
【参考方案1】:在app.js
中启用代理:
app.enable('trust proxy');
并修复 node.js 中有效路由的 uri:
ProxyPass /node http://localhost:8000/node
ProxyPassReverse /node http://localhost:8000/node
【讨论】:
嗨卢卡斯,感谢您的快速回答,不幸的是我仍然有同样的错误.. 是的,如果我运行 'node app.js' 并转到 localhost:8000/node 路由,它就可以工作。 抱歉,在 Apache 中我不知道在做什么。 Node.js 与 nginx 配合得很好,因为 Nginx 比 Apache 更适合提供静态文件。在 Nginx 中配置反向代理也很有效。也许是你感兴趣的搜索和尝试。【参考方案2】:localhost 可能是 ipv6 地址,试试 127.0.0.1 insteed
【讨论】:
以上是关于代理错误 502,在 apache2 服务器上运行节点 js 应用程序的主要内容,如果未能解决你的问题,请参考以下文章