SSLを使用してnginxサーバーをセットアップしています。
Sslのあるドメインはwww.mydomain.comです
次からのすべてのリクエストをリダイレクトしたい:
http://mydomain.com 、 http://www.mydomain.com 、& https://mydomain.com to
現在、次のサーバーブロックをセットアップしています。
server{
listen 443 ssl;
root /www/mydomain.com/;
ssl_certificate /ssl/domain.crt;
ssl_certificate /ssl/domain.key;
.
.
.
}
server{
listen 80;
server_name mydomain.com;
return 301 https://www.mydomain.com$request_uri;
}
server{
listen 80;
server_name www.mydomain.com;
return 301 https://www.mydomain.com$request_uri;
}
server{
listen ssl 443;
server_name mydomain.com;
return 301 https://www.mydomain.com$request_uri;
}
これは現在動作しませんが、なぜ動作しないのかわかりません。 http-> httpsが機能するか、no-www to-> wwwが機能するかの組み合わせを取得できますが、上記のようにそれらを混合しても機能しません。
SSL証明書がwww以外のドメインをサポートしていない場合、SSLリダイレクトは機能しません。構成は正しいですが、リダイレクトサーバーを1つに減らすことができます
また、nginx Sudo service nginx reload
をリロードすることを忘れないでください
server {
listen 80;
listen 443 ssl;
server_name example.com;
# add ssl settings
return 301 https://www.example.com$request_uri;
}
遅くなりましたが、このようにすることができます
server{
listen 443 ssl;
server_name www.mydomain.com;
root /www/mydomain.com/;
ssl on;
ssl_certificate /ssl/domain.crt;
ssl_certificate /ssl/domain.key;
.
.
.
}
server{
listen 80;
server_name www.mydomain.com mydomain.com;
return 301 https://$server_name$request_uri;
}
server{
listen 443;
server_name mydomain.com;
return 301 https://www.$server_name$request_uri;
}
または、return 301 https://www.$server_name$request_uri;
をrewrite ^ http://www.$server_name$request_uri? permanent;
に置き換えることができます。両方とも機能します。
また、SEOを改善するには、Google Webマスターでこれを設定する必要があります。
#If you like to redirect all "http" to "https" then add the following:
server {
listen 80;
server_name yourdomain.com;
server_name www.yourdomain.com;
if ($scheme = "http")
{
rewrite ^(.*)$ https://yourdomain.com$1 permanent;
}
}