使用Apache的反向代理将基于Node.js搭建的应用程序转发到https上
使用反向代理将在除了80,443端口之外搭建的应用程序转发。
如题所示,将Apache的443端口转发到本地的3000端口,以运行中的nodejs应用程序。
通常情况下,WEB应用程序不需要使用反向代理,因为它们通常在80端口或443端口上进行构建。但是,如果使用PHP以外的语言构建,例如Go或Node.js,则可能需要在其他端口上进行构建。
由于在监听80或443端口时遇到了反向代理设置的问题,我将其作为备忘录记录下来。
请参考以下原文:“使用Apache构建反向代理服务器的方法,请参考以下链接:https://blog.neet-shikakugets.com/construct-reverse-proxy-using-apache。”
首先,如果在没有反向代理的情况下对基本应用程序进行SSL设置的话。
<VirtualHost *:443>
# SSL
SSLEngine on
SSLCertificateFile /var/www/[SSL証明書へのパス]/cert.pem
SSLCertificateKeyFile /var/www/[SSL証明書発行時の秘密鍵へのパス]/privkey.pem
</VirutalHost>
在上述设置下没有问题。
如果要进行常规的反向代理传输,请在此基础上进行操作。
<VirtualHost *:443>
# SSL
SSLEngine on
SSLCertificateFile /var/www/○○○○○/cert.pem
SSLCertificateKeyFile /var/www/○○○○/privkey.pem
# Proxy設定
ProxyRequests Off
ProxyPass / https://your-original.com:3000/
ProxyPassReverse / https://your-original.com:3000/
</VirtualHost>
在这样的设定下,我们很难解决问题,陷入了相当的困境。
嗯,事实上,仅仅依靠上述设定是无效的,还需要进行以下的调整。
<VirtualHost *:443>
# SSL
SSLEngine on
SSLProxyEngine On # <<<-この設定が必要になる
SSLCertificateFile /var/www/○○○○/cert.pem
SSLCertificateKeyFile /var/www/○○○○/privkey.pem
# Proxy設定
ProxyRequests Off
ProxyPass / https://your-original.com:3000/ # <<< 末尾の/は必須のようです。
ProxyPassReverse / https://your-original.com:3000/ # <<< 末尾の/は必須のようです。
</VirtualHost>
在上述设置下,例如,从https://your-original.com转发到https://your-original.com:3000。