У меня есть веб-приложение, которое взаимодействует с конечным пользователем через порт 80 и с Express Server через порт 3001. Я настроилобратный проксино код, похоже, возвращает мой ответ сервера напрямую моему конечному пользователю вместо кода html веб-приложения. Мне нужно, чтобы веб-приложение продолжало отправлять свой типичный ответ html, отправляя запросы API сервера на порт 3001. Я неправильно настроил свой прокси?
Сложность здесь в том, что мое веб-приложение действует как сервер (для конечного пользователя) и как клиент (для сервера Express).
Вот моя конфигурация vhost:
<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 позволило мне по-прежнему получать доступ к моей HTML-странице из корневого домена, передавая любые дополнительные вызовы API на мой сервер.
<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>