php_modが非推奨になったのね

昔のバージョンのphp環境でphpバージョンを上げるという対応中。 apache + PHP8のインスタンスを構築してドキュメントルートまで到達を確認。 対応する人にドキュメントルートまで到達するからプロジェクトのファイルを置いてバージョンアップのエラーを確認してもらうため依頼しましたが HTTP 503 Service Unavailable のエラーが出ているとのこと。 HTMLファイルはアクセスできているからPHPの実行ができていないと思い調べると Apache HTTP サーバーで使用するために PHP に提供されている mod_php モジュールが非推奨になりました。 php-fpmをインストールして起動し、リクエストを流してphp-fmpでphpを実行するようにして解決。 しばらくPHPを触っていなかったのでモジュールが非推奨になったことに気づかずでした。

ELBで80番ポートアクセスをしていたのですべてのアクセスを443番ポートにアクセスさせる

WEBサービスで80番ポートアクセスをができるのがセキュリティ上よくないので443にアクセスするようにしたら少しハマったのでメモ


先日に担当しているサービスを見ていたら、社内の共有ツールに記載していたリンクURL(ログインページ)がHTTPになっていて、HTTPSに書き換えてみたら何故かログインページでリダイレクト→HTTPでログインページ表示というおかしな挙動をしていたのであれ?っと思い、そのままログインしてみたらHTTPのままページが表示されていた。

やばい!!

と思い調べてみたらどうやら社内共有ツール記載のサービスログインページURLが間違っておりリダイレクトしてHTTP→そのままHTTPでページ遷移してもアクセスし続けるという危ない状態。。

利用側へ配っているURLはHTTPSでURLも間違っていないのでひとまずホッとしたが、社内の人間がアクセスしていたものはログインから情報ダダ漏れというお粗末な始末…

昔はログインページはHTTPでログイン実行時のアクセスはHTTPSにするなんてこともしていましたが、基本的に今はログインサービスすべてのアクセスはHTTPSにしたほうがいいと思います。

そんなこんなで、コードの記載なおそうかと思ったんですが1箇所直せばいいのかと思いきやどこを直していいかわからない。。フレームワークでちょいちょいと思っていたんですがね。。

ということで以前にapacheの設定ですべてのHTTPアクセスをHTTPSにリダイレクトしていたので同じ対応をしようと思いました。

書き方忘れちゃったので調べてみると

<ifModule mod_rewrite.c>
      RewriteEngine On
      LogLevel alert rewrite:trace3
      RewriteCond %{HTTPS} off
      RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</ifModule>



こんな感じの記載は見かけるんですが、これを対象サービスのvirtualhost.confに記載してgracefulしてみると。。。

ERR_TOO_MANY_REDIRECTS


なんですと!!!

リダイレクトループでエラーになっていますね。。
ちなみにステージングで試しているのでまあ大丈夫です。

おかしいな〜、前もこんな記載していたと思ったから先入観でなんでだ??ってなっていたのですが冷静に考えるとわかりました。

サービスはELB(Elastic Load Balancing)を使っていて、80番と443番ポートを受け付けてそれをEC2に80番で流しています。
てことは、ELBに80番で来てEC2に80番で流れてくると443でまた来いよとリダイレクトします。しかしその後にELBで443番で受け付けてもEC2に80番で流してしまいます。
そうするとまた443でまた来いよ!って

永遠のリダイレクトですね

ということでELBでの443リダイレクトで調べるとAWSサポートページにたどり着いて記載されていました。

Classic Load Balancer で HTTP トラフィックを HTTPS にリダイレクトする際、ERR_TOO_MANY_REDIRECTS エラーが発生するのはなぜですか。

<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]
</VirtualHost>
こちらに変更して解決です!!

前はこの記載じゃなくてできてた気がするけど、ELBじゃなかったのかな??
そういえば前はELBも443しか受け付けてなかった気がしてきた。。。

何はともあれ良かったよかった!!

コメント

このブログの人気の投稿

nginxで画像が表示されない。。

AWSのS3バケットをマウントするs3fsでマウントが外れた件

CakePHP3でHTTPSにする