CentOS7 Nginxでリダイレクト処理

スポンサーリンク

Apacheでmod_rewriteを使ったリダイレクト処理をNginxでも設定可能です。ただ、設定方法はNginxのほうが直感的でわかりやすいです。Apacheでの設定は以下を参照ください。

Apacheでmod_rewriteの設定

まず自サイトにきたアクセスは全て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

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする