このままでいっか

アニメとか,プログラミングとか,研究とか,思ったことをだらだらと書く感じで

MAMP PROでリバースプロキシ構築とHTTPS対応!

僕の研究室では,Mac mini1台でHP用のWebサーバ,ソフトウェア用のWebサーバ,そしてメールサーバを運用しています.

とても省スペースですし本研究室での利用には十分なスペックを持っています. まぁ,実際には秘伝のタレが熟成されていて,分離するのに結構なリソース食いそうなのでとりあえず放置って感じです. 本当は,分割してしまいたいんですけど,,,大学っていう環境もサーバ構築に面倒が生じます.

閑話休題,このHP用のWebサーバは現在MAMP PROを用いています.

以前までは80番で通常のhttpでのみホームページを公開していましたし,これで問題なかったのですが,ここ数ヶ月で数人がWebアプリケーションを外部に公開するしたり,Webメーラーを公開したりするという状況になったので,HTTPSへの対応が必要になりました.

また,これを期に公開するソフトウェア用に別のWebサーバを当該サーバのローカルネットワーク内に立て,リバースプロキシを通して通信させることにしました.

このとき,MAMP PROでSSLに対応すること,リバースプロキシとしての機能をONにすることで少しハマったので備忘録を残しておきます.

とはいえ,ここ(MAMP公式ドキュメント)をちゃんと見れば,ほぼわかります.僕はこのドキュメントを無視していたのでハマったところは有りますね.ドキュメントはちゃんと読もう...

運用環境

f:id:dbym4820:20180228202555p:plain

では行きましょう.

ハマりどころ1:MAMP PRO用のApache設定ファイルとMAMP用のファイルを間違える

普通のMAMP用の設定ファイルの場所は非常にわかりやすくて,

/Applications/MAMP/conf/apache/

以下にApache用の設定ファイルがあります.(同ディレクトリにSQLiteManager,PHP,Nginx用の設定ファイルもあります)

はじめはこの設定がMAMP PROでも有効なのかと思いこんでしまい,しばらくハマりました.なぜそんなハマり方をしてしまったかというと,一度MAMP PROを起動させた後,MAMPApache設定ファイルを書き換え,その後

$ /Applications/MAMP/bin/apache2/bin/apachectl restart

をコンソールから手入力する(MAMPApacheを手動で再起動する)と,MAMP PROで動かしているWebサーバの設定として反映されるからです.

まず,この謎挙動には戸惑いましたが,どうやらMAMP PROには別の設定用ファイルがあるようです.

ハマりどころ2:正しいMAMP PRO用のApache設定ファイルの場所がわからない&見つけたものが正しいとは限らない

ハマりどころ1に問題に気付いたときに,残念なことに僕はドキュメントを見ずにファイルを探し始めてしまいました,一応心当たりが無くはなかったからですね.

MAMP PROのアプリケーション内に

/Applications/MAMP\ PRO/MAMP\ PRO.app/Contents/Resources/httpd.conf

というファイルがありました.

これをいじれば良いんじゃね?と思っていた僕は,この中の設定を操作しました.

そしてMAMP PROのWebサーバを再起動冴えるボタンをおし,Webページを確認すると...設定が適用されているように見えますね!

数日間このままで正常に運用できましたが,数日後問題は発生しました.たまたまサーバが乗っているMac miniを再起動させる機会があったのです.

再起動後,MAMP PROを立ち上げようとすると,立ち上がりません.エラーメッセージを吐いて落ちてしまいます.

はじめはapacheMySQLの設定ファイルがBad Formedなせいかなと思いいろいろ試しましたがびくともしません.

ここで僕は公式ドキュメントに出会いました.

該当する問題の対処法は載っていませんでしたが,このページにはこのように書かれています.

httpd.conf file

You cannot directly edit your httpd.conf file in MAMP PRO. You need to make custom configurations through your httpd.conf template file. More information on how to configure your httpd template file can be found in our Menu > File section.

この方法はだめなんですね.どうやら僕はMAMP PRO自体を壊してしまったみたいです.MAMPをアンインストール後,再度インストールし,同様の作業をした後,一度MAMP PROを削除して,再度立ち上げようとすると同じ落ち方をします.

僕はたまたまTimeMachineでバックアップを取っていたので戻せましたが,もしバックアップがなければ悲惨ですね.気を着けましょう.

正しくは,ドキュメントに書かれている通り,MAMP PROのメニューバーにある「File」の「Edit Template」下の「Apache」の中に「httpd.conf」と「httpd-ssl.conf」があります.これを編集するようにしろとのことですね.

無事に編集できました.

ハマりどころ3:SSL証明書の設定の仕方がわからない

HTTPSに対応させるために,前回の失敗で学んだ僕は公式ドキュメントをちゃんと読みました.

SSLについては,ここにかかれています.

f:id:dbym4820:20180228210321p:plain

ここの「Certification file」に該当する証明書を指定すればいいみたい,かと思いきやこのままでは,矢印ボタンなどが押せません.なんということでしょう.

意味がわからずしばらくハマりました.

この問題の解決策は,以下のように「+」ボタンから,新しいホスト設定の作成をするだけでした.

f:id:dbym4820:20180228210847p:plain

僕の場合は,適当にsslhostという名前をつけました.これで無事にCertification fileを選択できるようになります.

f:id:dbym4820:20180228210946p:plain

SSLをローカルサーバにリバースプロキシしたければ,次のように書き加えて完了です.

f:id:dbym4820:20180228211343p:plain

この設定は,MAMP PRO自体のドメインをhogehogeだとすると

https://hogehoge/software/ へのリクエストをそのWebサーバから見て https://192.168.0.83/ へのリクエストとして扱います.

まとめ

あと,おそらくここ

f:id:dbym4820:20180228211837p:plain

で設定の追記ができると思うんですが,どうも書き方がわからない(それらしいことを書いても反応しない)ので,ご存じの方は教えてください.

ドキュメントはちゃんと読みましょうという話でした.