nginxのserver_nameはちゃんと設定したほうがいいね。というお話
今日の内容
nginxのserver_nameはちゃんと設定したほうがいいね。というお話。 めんどくさくて省いたり、default_server をつけちゃったりしてたけど、ちゃんと書くことに意義がある事を知った日でした。
背景
関与しているサービスで、エラーマネジメントサービスにエラーが上がった。意味不明な(想定しない)リクエストを受けてエラーを吐いていた。 request.url がサービスのFQDNではなく他社の仮想通貨取引所のFQDNであった。 どうやら、アクセス元は私が扱うサービスのELBのIPに直接リクエストを送ってきている様だった。
cat /etc/hosts xx.xxx.xxx.xx (ELBのIP) hogehoge.com (適当なホスト名)
この状態で curl -X GET https://hogehoge.com/hoge/fuga -k をすると発生する。
nginx
nginxはポートでサービス分けてたので server_name
は端折ってた。
その結果、上記の設定のときにAppサーバーまでリクエストが届いてしまっていた。
本来はnginxが自分のFQDNに合わない場合は捨てるべきだと思う。
で結局
server { listen 4447 default_server; server_name ""; add_header X-Robots-Tag noindex ; location ~ ^/elb/ { proxy_pass https://hoge; access_log off;} #ELBはこっちに着信するのでELB用のロジックはここに書いた location / { return 200; } } server { listen 4447; server_name watashino.hostname.com; ~~~ (略) ~~~ }
こんな風に同じポートのserverを追加し、
意図したFQDNじゃない場合に吸い込むcatch_all なserver
を作ることになった。
感想
server_nameを設定して、関係ないアクセスを破棄するって大事だよなーって思って、 ちゃんと今度から書こうって思った。(小並感)