Debian

Apache 2 虛擬主機允許從一個目錄提供所有文件

  • September 11, 2019

我的 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://localhost:8080訪問網頁(即直接沒有 apache 代理)它工作得很好。但是在http://localhost:80(即 apache 代理)上,它只為我提供index.html文件。其他兩個文件未提供,Chrome 網路選項卡Status: 502 Proxy Error為它們顯示。

所以我的問題是,我怎樣才能讓 Apache 代理從public目錄中看到所有這些文件,以便它可以將它們發送到我的瀏覽器?謝謝!

您能否嘗試在 ProxyPass 末尾添加一個額外的斜杠,例如:

ProxyPass http://127.0.0.1:8080/

?

引用自:https://unix.stackexchange.com/questions/541177