php_modが非推奨になったのね

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

nginxでaccess.logにアクセスユーザーの識別子を出す

nginxでaccess.logにアクセスユーザーの識別子を出すように設定


環境について
OS:debien
※これは設定ファイルの場所の違い等があるかもしれないがそれ以外はどれでも同じ
nginx: 1.17.6
言語: Go 1.11.2

基本的にはこちらを参考にしています。
nginxのアクセスログにユーザーIDを記録する方法

結構以前のものですがそのまま使えてます。助かりました。まずはnginxの設定から

 vim /etc/nginx/nginx.conf こちらのログフォーマットを追加
 >  log_format  sample-log  '$remote_addr - $remote_user [$time_local] "$request" '
 >                     '$status $body_bytes_sent "$http_referer" '
 >                     '"$http_user_agent" "$http_x_forwarded_for" '
 >                     '$upstream_http_x_user_id';

#該当アクセスログの出力設定に追加したログフォーマットを指定する
> access_log /var/log/nginx/access.log sample-log;
こちらを追加して、実行しているプログラムなりからHeader情報X-user-Idを追加することになります。

今回はGo言語だったので、IDが取れるのは各認証が必要なAPIは
認証関数が実行され、そこでIDが取得されるのでこちらに以下を記載
w.Header().Set("X-User-ID", fmt.Sprintf("%d", Id))/code>

w関数の引数で受け取っている
w http.ResponseWriter

これで
nginx -s reload
でアクセスログの最後にアクセスユーザーIDが出力するようになりました。

レスポンスヘッダーにX-User-Idが含まれないようにする対応もしています。
proxy_hide_header X-User-ID;

今回対応した環境はリバースプロキシだったのでこれでよかったですが、そうでない場合にmore_clear_headersディレクティブを使うパターンは試していません。

コメント

このブログの人気の投稿

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

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

CakePHP3でHTTPSにする