我的 Debian 系统上安装了 Apache 2 服务器。 Apache 侦听端口 80。然后我有一个简单的 NodeJS 服务器侦听端口 8080。我想使用 Apache 作为 NodeJS 服务器的代理。到目前为止我所拥有的:
/etc/apache2/sites-available/000-default.conf
文件:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ProxyRequests Off
ProxyPreserveHost On
ProxyVia Full
<Proxy *>
Require all granted
</Proxy>
<Location />
ProxyPass http://127.0.0.1:8080
ProxyPassReverse http://127.0.0.1:8080
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
然后我有nodeJS服务器/var/www/html/nodejs/app.js
:
const express = require('express')
const app = express()
const port = 8080
app.get('/second', function(req, res){
res.sendFile('/var/www/html/nodejs/public/second.html');
});
app.listen(port, function() {
console.log(`Example app listening on port ${port}!`)
});
app.use(express.static("/var/www/html/nodejs/public"));
在我的/var/www/html/nodejs/public
目录中我有静态文件index.html
,second.html
并且myScript.js
现在...我的问题是:如果我通过以下方式访问网页http://本地主机:8080(即直接没有 apache 代理)它工作得很好。但在http://本地主机:80(即apache代理),它只为我提供文件index.html
。其他两个文件不会被提供,并且 Chrome 网络选项卡会显示Status: 502 Proxy Error
它们。
所以我的问题是,如何才能让 Apache 代理看到public
目录中的所有这些文件,以便将它们发送到我的浏览器?谢谢!
答案1
您可以尝试在 ProxyPass 末尾添加一个额外的斜杠,例如:
ProxyPass http://127.0.0.1:8080/
?