【问题标题】:Proxy error 502 , run node js app on apache2 server代理错误 502,在 apache2 服务器上运行节点 js 应用程序
【发布时间】: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。

谢谢。

【问题讨论】:

    标签: javascript node.js apache proxy ubuntu-14.04


    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-08
      • 2017-10-04
      • 2021-02-17
      • 2018-01-19
      • 2019-10-04
      相关资源
      最近更新 更多