httpsで構築したnodejsアプリケーションをApacheのリバースプロキシで転送する
80,443以外のポートで構築したアプリケーションをリバースプロキシで転送する
掲題のとおり、Apache 443ポートから127.0.0.1ポート3000で動作中のnodejsアプリケーションに転送する
通常、WEBアプリケーションは、80ポート、443ポートで構築するため別段リバースプロキシを必要としないが、特にPHP以外の言語で構築した場合、GoやNodejsなどは別途任意のポートで構築すると思います。
その際の80あるいは443ポートで待ち受ける際のリバースプロキシの設定がうまくいかなかったので、備忘録として残しておきます。
※参照元
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 へと転送される。
Author And Source
この問題について(httpsで構築したnodejsアプリケーションをApacheのリバースプロキシで転送する), 我々は、より多くの情報をここで見つけました https://qiita.com/mashed_potatoes/items/3094338427d481440d4f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .