내 Debian 시스템에 Apache 2 서버가 설치되어 있습니다. Apache는 포트 80에서 수신 대기합니다. 그런 다음 포트 8080에서 수신 대기하는 간단한 NodeJS 서버가 있습니다. 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://localhost:8080(즉, 아파치 프록시 없이 직접) 잘 작동합니다. 하지만http://localhost:80(예: Apache 프록시), 나에게 파일만 제공합니다 index.html
. 다른 두 파일은 제공되지 않으며 Chrome 네트워크 탭에 표시됩니다 Status: 502 Proxy Error
.
public
그래서 내 질문은 Apache 에이전트가 디렉터리에 있는 이러한 모든 파일을 확인하여 내 브라우저로 보낼 수 있도록 하려면 어떻게 해야 합니까 ? 감사해요!
답변1
ProxyPass 끝에 추가 슬래시를 추가해 볼 수 있습니다. 예를 들면 다음과 같습니다.
ProxyPass http://127.0.0.1:8080/
?