くろもワークス

しがないWebエンジニアの日記です。

nginxでhttpsのwwwなしURLにリダイレクトさせる設定

例えば「https://kuromoworks.com/」といったURLを、

といったリクエストの場合でも、「https://kuromoworks.com/」にリダイレクトさせる、nginxの設定例です。

nginxの設定例

以下が実際の設定です。 冗長な書き方な気もしますが、これでとりあえず動いています。

server {
    listen 80;
    server_name kuromoworks.com;
    return 301 https://kuromoworks.com$request_uri;
}

server {
    listen 80;
    listen 443;
    server_name www.kuromoworks.com;
    return 301 https://kuromoworks.com$request_uri;
}

server {
    listen 443 ssl default_server;
    server_name kuromoworks.com;
    ...
}

listen 443 ssl default_server;の部分がミソで、 default_serverの記述がない場合だと、 no "ssl_certificate" is defined in server listening on SSL port while SSL handshaking〜 といったエラーが出て動かなかったため、nginxでSSL通信設定をした際のエラーの対処を、 参考に追記したら動きました。

ちなみに、「httpsのwwwありURLにリダイレクト」させたい場合は、 以下のような設定になるかと思います。

server {
    listen 80;
    server_name kuromoworks.com;
    return 301 https://www.kuromoworks.com$request_uri;
}

server {
    listen 80;
    listen 443;
    server_name www.kuromoworks.com;
    return 301 https://www.kuromoworks.com$request_uri;
}

server {
    listen 443 ssl default_server;
    server_name www.kuromoworks.com;
    ...
}