apache 2.4 httpd.conf 設定

apache 2.4 httpd.conf

ロギング

ELBのIPではなく接続元のIPを保存

LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" elbcombined

ELBからのヘルスチェック、ダミーコネクション、画像などのロギングをメインのログには出力しない。出力しなかったログを個別にロギング。

SetEnvIf User-Agent "ELB-HealthChecker/2.0" nolog
SetEnvIf User-Agent "ELB-HealthChecker/2.0" nologelb
SetEnvIf User-Agent "internal dummy connection" nolog
SetEnvIf Request_URI ".(gif|jpg|png|css|ico|js)$" nolog
SetEnvIf Request_URI ".(gif|jpg|png|css|ico|js)$" nologcss
CustomLog "logs/access_log" elbcombined env=!nolog
CustomLog "logs/elb_access_log" elbcombined env=nologelb
CustomLog "logs/css_access_log" elbcombined env=nologcss

セキュア設定

TraceEnable off
ServerTokens Prod
Header always unset X-Powered-By
RequestHeader unset Proxy
Header append X-Frame-Options SAMEORIGIN
Header set X-XSS-Protection "1; mode=block"
Header set X-Content-Type-Options nosniff
Header always unset Etag

続きを読む

PHP Warning: Unknown: Unable to clear session lock record in

HTTPのセッションをmemcachedでメモリ管理したいのだが・・・

環境

  • Apache 2.4.23
  • php 7.0.13
  • memcached 1.4.33 (ElastiCache)

症状

sessionへのアクセス時にエラーになり、$_SESSIONが使えない

session.lazy_write = Off
を設定すると少し動作が改善されて数回に1回の割合で$_SESSIONへのアクセスがエラーになる。

memcached.sess_lock_wait_min = 250
を設定すると、さらに安定するが、数十回に1回ぐらいの割合で$_SESSIONへのアクセスがエラーになる。

workaround

memcached をやめて、redis に変更(php?のバージョンアップで改善されると思われるので・・・)。
https://pecl.php.net/package/redis/3.1.1 このあたりからモジュールをインストール

[Session]
session.save_handler = redis
session.save_path = "aws-XXXXX-XXXXX.XXXXX.XXXXX.cache.amazonaws.com:6379"

この設定だけで、動作確認OK。

AWSなので、memcached/redisどちらを使ってもコストは一緒。
最終的に、redisのクラスタ構成で安定稼働を目指します。

2017-03-19 17_46_04-phpinfo().png

参考:
https://github.com/magento/magento2/issues/5319
https://forums.aws.amazon.com/thread.jspa?threadID=240538

続きを読む