Apacheでmod_rewriteを使ったリダイレクト処理をNginxでも設定可能です。ただ、設定方法はNginxのほうが直感的でわかりやすいです。Apacheでの設定は以下を参照ください。
まず自サイトにきたアクセスは全てhttp://www.redirect.local/へ転送するための設定です。下記ではアクセスしたきた場合、恒久的な転送ということでステータスコード301が応答します。
# vi /etc/nginx/conf.d/default.conf server { listen 80; server_name localhost; rewrite ^(.*)$ http://www.redirect.local$1 permanent; } |
一時的な転送ということであれば302を返すredirectを指定します。
# vi /etc/nginx/conf.d/default.conf server { listen 80; server_name localhost; rewrite ^(.*)$ http://www.redirect.local$1 redirect; } |
下記はhttpアクセスを強制的にhttpsアクセスに書き換える例です。
# vi /etc/nginx/conf.d/default.conf server { listen 80; server_name localhost; rewrite ^(.*)$ https://localhost$1 permanent; } |
特定のIP(1.1.1.1)からのアクセスはステータスコード302(一時的)でリダイレクト、それ以外は301(恒久的)にリダイレクトする例です。
# vi /etc/nginx/conf.d/default.conf server { listen 80; server_name localhost; if ( $remote_addr = '1.1.1.1' ) { rewrite ^(.*)$ https://localhost$1 redirect; } rewrite ^(.*)$ https://localhost$1 permanent; } |
このNginxのif文に関してはserverとlocation内で使用可能です。
AND条件など使いたい場合は単純に&&などを使うのではなく、複数のif文を組み合わせて使用することになるようですが、まだそこまで複雑なものが必要な場面に出くわしていないので、とりあえずは上記のような単純な記述で充分です。
また、if文といえばelseがすぐに使いたくなりますが、Nginxでelseは使えません。
参考URL:
https://www.skyarch.net/blog/?p=7088
https://server-setting.info/centos/apache-nginx-4-setting-redirect.html
http://sookibizviz.blog81.fc2.com/blog-entry-1727.html