私の目標は、http://
で始まるか、または//www.
を含むすべての要求されたURLのチェックを主にnginxに返させ、//www.
が//
で置き換えられ、http://
がhttps://
で置き換えられたURLに301をリダイレクトすることです.
要するに、必要に応じて、すべてのリクエストが非www、SSLバージョンにリダイレクトされるため、その後、特定のドメインのリバースプロキシとして機能する他のすべてのデフォルト以外のサーバーは、常にhttps、非wwwを取得しますリクエスト。
どうすればいいですか?
http
サーバーは特定の証明書を必要としないため、単一のhttps
ブロックですべてのドメインをserver
non-wwwにリダイレクトできます。
例えば:
server {
listen 80;
server_name ~^(www\.)?(?<domain>.+)$;
return 301 https://$domain$request_uri;
}
詳しくは このドキュメント をご覧ください。
https
サーバーは、おそらく各ドメインに特定の証明書を必要とします。 wwwからwww以外にリダイレクトするには、特定の証明書が両方の名前バリアントに対して有効である必要があります。リダイレクトを実行するには、特定のドメインごとに2つのserver
ブロックを使用する必要があります。既存のブロックと別のブロックです。
例えば:
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /path/to/example.com.crt;
ssl_certificate_key /path/to/example.com.key;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/example.com.crt;
ssl_certificate_key /path/to/example.com.key;
... this is the existing server block for this domain ...
}
詳しくは このドキュメント をご覧ください。