Apache 2 虚拟主机允许提供目录中的所有文件

Apache 2 虚拟主机允许提供目录中的所有文件

我的 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.htmlsecond.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/

相关内容