nginxのリダイレクト設定ではまった話




  1. Home

  2. >
  3. ホームページ作成
  4. >
  5. nginxのリダイレクト設定ではまった話

http → https、www無しのURL → www有のURL
へとリダイレクトさせるのに、nginxのconfigファイルを下記のように設定していました。

server {
    listen 80;
    server_name kamitonokaiwa.syanon.net;
    return 301 https://kamitonokaiwa.syanon.net$request_uri;
}

server {
    listen 80;
    server_name www.kamitonokaiwa.syanon.net;
    return 301 https://kamitonokaiwa.syanon.net$request_uri;
}

server {
    listen 443 ssl;
    server_name kamitonokaiwa.syanon.net;
    return 301 https://kamitonokaiwa.syanon.net$request_uri;
}

server {
    listen 443 ssl;
    server_name www.kamitonokaiwa.syanon.net;
    ssl_certificate ...
    ssl_certificate_key ...
(以下、省略)

この設定だと、http → https は正常にリダイレクトされるのに、
httpsでの www 無しのURL → www 有の URL のリダイレクトはされませんでした。

ちゃんとメモしてなかったので、どのコマンドでのエラーか覚えてませんが証明書関連のエラーが出ていました。

下記のようにリダイレクト元のURLにアクセスがあった時の設定にもSSLの証明書のパスを加えることで正常にリダイレクトされるようになりました。

server {
    listen 443 ssl;
    server_name kamitonokaiwa.syanon.net;
    ssl_certificate ...
    ssl_certificate_key ...
    return 301 https://kamitonokaiwa.syanon.net$request_uri;
}

server {
    listen 443 ssl;
    server_name www.kamitonokaiwa.syanon.net;
    ssl_certificate ...
    ssl_certificate_key ...
(以下、省略)