コンクリートファイブジャパン 岩本です。
今回リニューアルに伴って、WebサーバーがApacheからNginxへと変わったことで、htaccessが利用できなくなり、スパム対策ように記載してたアクセス制限の記述もNginx用に変換する必要がありました。
まず、以前のApache環境での記載は下記の様になっています。
コンクリートファイブジャパン 岩本です。
今回リニューアルに伴って、WebサーバーがApacheからNginxへと変わったことで、htaccessが利用できなくなり、スパム対策ように記載してたアクセス制限の記述もNginx用に変換する必要がありました。
まず、以前のApache環境での記載は下記の様になっています。
set $spambot 0;
if ( $http_referer ~* 'hogehoge01.com' ){
set $spambot 1;
}
if ( $http_referer ~* 'hogehoge02.com' ){
set $spambot 1;
}
if ( $http_referer ~* 'hogehoge03.com' ){
set $spambot 1;
}
.....
if ( $spambot = 1) {
return 403;
}
挙動は同じですが、記載方法が大きく異なります。
Nginxであれば、if文で記載できるようになり、より柔軟な処理を記載することができるようになります。
ただし、Nginxでは前記の通りhtaccessが利用できません。
Apache環境であれば、対象となる最上位のディレクトリ内に「.htaccess」ファイルを設置することで設定が可能でしたが、Nginxでは上記の設定をサーバーの設定ファイルへ追記する必要があります。
数行の設定であれば、いまあるNginxの設定ファイルに追記しても問題ありませんが、拒否したいリファラー数が数十行、数百行となった際に、既存の設定ファイルに追記すると視認性が悪くなり、メンテナンス性が下がります。
そこで、対象となる箇所のみを1ファイルにまとめ、Nginxの設定内にincludeすることで、設定ファイルを簡潔にできます。
server {
listen 443 http2;
....
#### deny spambot ######
include /etc/nginx/deny_spambot.conf;
}
上記の様にserverディテクティブいかにincludeすることで、設定の分離ができました。
同様に、他の設定でも、includeを利用することで設定の項目ごとに別ファイルとすることで、視認性、メンテナンス性を高めることができます。