引越しを機に爆誕したnk.鯖を間借りした。
ゲストOSにはいつも通りDebianを選び、Apache2.4をインストールしてWordPressサイトを別のサーバーから移転させたのだが、Limit Login Attemptsという管理画面へのブルートフォースアタックの対策プラグインにより、めでたく自分が締め出された(ありがち)。
原因はNginxをフロントエンドで使っているため、Apache2側にはNginxのIPアドレスが渡るという事だ。
久しぶりすぎてすっかり忘れていた。
自鯖の設定ファイルを眺めて割りと一瞬で解決したのだが、いつかまたハマる筈なので備忘録として記事にしておく。
前提
- Nginx1.6.x
- Apache2.4
- Debian jessie 64bit
- これがベストな設定かは知らない
Nginx側の設定
/etc/nginx/conf.d内か/etc/nginx/sites-available内にあるはずの目的の設定ファイルを編集する。
location{}内に以下を追記。
[code]
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
[/code]
そして再起動。
[bash]
sudo /etc/init.d/nginx restart
[/bash]
Apache2側の設定
/etc/apache2/apache2.confを編集する。
だいぶ下のほうにログフォーマットを指定している部分があるので、一応コメントアウトして以下を追記する。
%hを%aに変えてるだけなので、独自のフォーマットに変えてる人はそのように。
[code]
LogFormat "%v:%p %a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%a %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%a %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
[/code]
さらに最下行にでも以下を追記する。
RemoteIPTrustedProxyにはNginxのIPアドレスを入れる。大体192.168ではじまるアレ。
[code]
<IfModule remoteip_module>
RemoteIPHeader x-forwarded-for
RemoteIPTrustedProxy xxx.xxx.xxx.xxx
</IfModule>
[/code]
忘れずにmod_remoteipを有効にしてApache2の再起動。
Apache2.4標準モジュールのはずなのでインストール方法は書かない(知らない)。
[bash]
sudo a2enmod remoteip
sudo systemctl restart apache2
[/bash]
あとがき
この手順で無事にアクセス元のIPアドレスを取得できた。
ホストに関しては使えなくて面倒とかいう話をどこかでみたことがある気がする。
対応モジュールを作ってGitHubかなんかに置いてるGODも居たはず。
コメント