ポート番号443以外でWEBアプリを運用していたら、繋がらないと言われたのでプロキシで解決した


更新履歴

 ProxyRequests ON にすると、どんどん踏み台にされるので、OFFにすることをオススメします

ポートフィルタリングしているケースって多いんですね

フリーランスになってすぐに運用し始めたお客さんのWEBアプリがあるんです。
最初はExcelVBAではじめ、続いてブラウザで動作させるため、GASで運用。
今やユーザ数も多くなり、GASで耐えられなくなったので、ちゃんとクラウドサーバで運用を始めました。
node で作成したのですが、せっかくサーバ立てるので、wordpress なんかも動作させていたんです。

node では 443 以外のポート(例:12345ポート)で expresshttps を受け付けていたのですが、新しくサービスに追加したお客さんから

つながらないよ~

と連絡をいただきました。

スクショを見て、Wifi使っていることと、お客さんの状況から、おそらくポートだと気付き、4Gにしてもらったら案の定つながりました。
さすがに

さっせん。4Gで頑張ってください。

と言えるほどメンタル強くないので、2~3日で改善する約束をしたので試行錯誤した結果、Apacheによる プロキシ運用にしました。

プロキシの設定

conf ファイルで一発解決。
やっぱ Apache ってよく考え抜かれていますね。

proxy_appli.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyRequests off            #ここをONにすると、踏み台にされちゃうので、自ホスト内変換だけが目的ならばOFF
ProxyVia On
SSLProxyEngine on
SSLProxyVerify none          #ここから3行は、接続先の SSLハンドシェイクに失敗したときに追加した
SSLProxyCheckPeerCN off      #/var/log/httpd/ssl_error_log を見ると、次のようなエラーコードが出ています
SSLProxyCheckPeerName off    #AH01797 AH01961 AH00961 AH00898 AH01097 AH01276 AH00957
                             #こんなのが出たら追加してみると幸せになれそう
                             #外部サイトへのプロキシを今後貼らないと信じて、これでよいと判断

<Proxy hoge.com:443/*>       #httpsの書き方
        Require all granted
</Proxy>
<Proxy hoge.com/*>           #httpの書き方
        Require all granted
</Proxy>

<Location /appli/>
        ProxyPass https://localhost:12345/
</Location>

ほかに考えたこと

Apache の 巨大な conf を見るのがあまり好きじゃないので、少し考えたけどやめたことを書いておく。

  • node express 側で、振り分けるというのも考えたが、node がプロキシのような動作をすると、wordpress とかの接続を node が一度受け取ることになり、負荷的になしかなと。