포트 80을 통해 최종 사용자와 포트 3001을 통해 Express Server와 통신하는 웹앱이 있습니다.역방향 프록시하지만 코드는 웹 앱 HTML 코드 대신 최종 사용자에게 직접 서버 응답을 반환하는 것 같습니다. 포트 3001에 서버 API 요청을 보내는 동안 일반적인 HTML 응답을 계속 보내려면 웹 앱이 필요합니다. 프록시를 잘못 설정했나요?
여기서 까다로운 점은 내 웹 앱이 서버(최종 사용자에 대한)와 클라이언트(Express 서버에 대한) 역할을 모두 수행한다는 것입니다.
내 가상 호스트 구성은 다음과 같습니다.
<VirtualHost *:443>
SSLEngine on
SSLProxyEngine on
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ServerName 192.168.253.101
ServerAlias example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/www/example.com/error.log
CustomLog /var/www/example.com/request.log combined
SSLCertificateFile "/etc/ssl/certs/Client_Cert.crt"
SSLCertificateKeyFile "/etc/ssl/certs/Client_Key.key"
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / https://localhost:3001/
ProxyPassReverse / https://localhost:443/
</VirtualHost>
답변1
ProxyPass 행을 ProxyPassMatch로 수정하면 추가 API 호출을 수신 대기 중인 서버에 전달하는 동시에 루트 도메인에서 HTML 페이지에 계속 액세스할 수 있습니다.
<VirtualHost *:443>
SSLEngine on
SSLProxyEngine on
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off
ServerName 192.168.253.101
ServerAlias example.com
DocumentRoot /var/www/example.com/public_html
ErrorLog /var/www/example.com/error.log
CustomLog /var/www/example.com/request.log combined
SSLCertificateFile "/etc/ssl/certs/Client_Cert.crt"
SSLCertificateKeyFile "/etc/ssl/certs/Client_Key.key"
ProxyRequests Off
<Proxy "*">
Require host yournetwork.example.com
</Proxy>
ProxyPassMatch ^/([a-z]+)$ https://localhost:3001/$1
</VirtualHost>