勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

Nginxでリダイレクト(http->https)及びリライト設定

  Nginx サーバー

Nginxでhttpアクセス時にhttpsリダイレクトさせたい。それとは別に「https://test.com/detail/123/」でアクセスした際に内部的には「https://test.com/detail/index.php?id=123」のようにリライトさせたい。以下に設定方法のメモ。

 

http->httpsリダイレクト設定

#設定ファイルの編集
vi /etc/nginx/conf.d/default.conf

#以下を追記
server {
    listen      80;
    server_name  test.com;
    return 301 https://$host$request_uri;
}

尚、同一server_nameで別のserver{}内に「listen 80;」の記述がある場合はコメントアウトしておく。コメントアウトしなくても動くことは動いたが、「nginx -t」で構文チェックを行った際に警告メッセージが表示された。尚、一通り対応が完了したらnginxを再起動する。

 

リライト設定

#設定ファイルの編集
vi /etc/nginx/conf.d/default.conf

#以下を設定したいドメインのserver{}内に追記する
location /detail/ {
    rewrite ^/detail/([0-9]+)/$ /detail/index.php?id=$1;
    index index.php;
    error_page 404 /detail/404.php;
}

「index index.php;」「error_page 404 /detail/404.php」部分は任意で設定する。

 

所感

リダイレクトの方はスムーズに対応できたが、リライトの方は無限ループになってしまったり等、割と難航した。この辺りは慣れていきたいところ。

 

参考サイト

https://kamotora.net/system/nginx/nginx-rewrite/

 - Nginx サーバー

  関連記事

Nginxで特定のディレクトリに対してBasic認証を設定

Nginxで特定のディレクトリに対してBasic認証を設定したい。Apacheだ ...

CentOS7系にLEMP環境(Linux + Nginx + MySQL + PHP)を構築

先日KAGOYAのVPSからIndigoに移行した際にCentOS6から7へバー ...

Nginxのバーチャルホスト設定とLet's Encryptの導入

NginxでVirtualHostの設定し、複数のドメインを同一サーバに割り当て ...