IPアドレス直打ちアクセスを拒否する(nginx)
バーチャルホスト運用しているサーバーで、IPアドレスを直接打ち込んでアクセスされた時に、意図せぬページが表示されてしまったりします。(CentOS7/nginx環境だとCentOSのwelcomeページが表示されてしまったりします。)
IPアドレスで直接アクセスを受け付ける必要がとくにないので、アクセスを拒否したいと思います。
nginx設定
さっそく設定する
筆者は、下記設定を/etc/nginx/conf.d/default.confに記述しているが、nginx.confに直接書いても良い。httpsはssl_certificate、ssl_certificate_keyの記述がないとnginxが起動できないので記載しておく。
server {
listen 80 default_server;
server_name _;
return 444;
}
server {
listen 443 ssl default_server;
server_name _;
ssl_certificate /etc/nginx/ssl/self.crt;
ssl_certificate_key /etc/nginx/ssl/self.key;
return 444;
}
注意点は、「default_server」の指定が重複した場合にはエラーとなるので、すでに記述がある場合には、削除する必要がある。
オレオレ証明書をつくる
すでになんらかの証明書のセットを持っていればそれを利用しても良いが、ない場合は、自己署名証明書を作成する。これがないと先程の設定を入れた上でのnginxの起動が出来ないので。
$ openssl genrsa 4096 > self.key
$ openssl req -new -key self.key > self.csr
$ openssl x509 -days 3650 -req -signkey self.key < self.csr > self.crt
忘れずにnginxを再起動
nginxが無事に起動できました。ブラウザからアクセスが拒否されているのが確認できました。(nginxのログでもHTTPステータス444が返却されているのが無事確認できました。)
httpsの場合は、ブラウザによる警告が表示されますが、警告を無視してアクセスした場合に、しっかりと444で弾かれていました。目的は果たせたのでよしとします。お疲れ様でした。