* .example.comを保護するワイルドカード証明書があり、サブドメインに対して行われたすべてのリクエストに対して正規のwwwを取り除く必要があります。例:www.subdomain1.example.com => subdomain1.example.com
私はこの質問をレビューしました: https://stackoverflow.com/questions/11323735/nginx-remove-www-and-respond-to-both
しかし、彼らが提案する最初のサーバーブロック:
server {
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
www.subdomain.example.comでは機能しません
Www。*。example.comのスキームをキャッチして返すにはどうすればよいですか?
私は別の質問を検討しました: https://serverfault.com/questions/249952/wildcard-vhosts-on-nginx 正規表現を使用してサーバー名を照合しますが、方法がわかりませんこれを私の状況に適用します。
これが私の現在の設定です:
server {
listen [::]:80 ipv6only=off;
server_name example.com *.example.com;
return 301 https://$Host$request_uri;
}
server {
# SSL configuration
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
server_name example.com *.example.com;
root /usr/share/nginx/webroot;
index index.php index.html index.htm;
rewrite /wp-admin$ $scheme://$Host$uri/ permanent;
#subdomain multi site with wp in 'wp' subdir
if (!-e $request_filename) {
# Redirect wp-* files/folders
rewrite ^(/[^/]+)?(/wp-.*) /wp/$2 last;
# Redirect other php files
rewrite ^(/[^/]+)?(/.*\.php) /wp/$2 last;
}
...(etc)
}
server_name
ディレクティブでは正規表現を使用できますが、ワイルドカード名(*.example.com
など)が優先されます。詳細は このドキュメント を参照してください。
例えば:
server {
listen [::]:80 ipv6only=off;
server_name ~^(www\.)?(?<name>(.+\.)?example\.com)$;
return 301 https://$name$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
server_name ~^www\.(?<name>(.+\.)?example\.com)$;
return 301 https://$name$request_uri;
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
include snippets/ssl-example.com.conf;
include snippets/ssl-params.conf;
...
}
最初のserver
ブロックはhttp
リクエストを任意のサブドメインに照合し、https
を使用してwww以外のバリアントにリダイレクトします。
2番目のserver
ブロックは、https
リクエストをwww.
で始まるサブドメインに一致させ、www以外のバリアントにリダイレクトします。
3番目のserver
ブロックはserver_name
ディレクティブを必要とせず(デフォルトのサーバーであるため)、メインドメインと非wwwサブドメインへのすべてのhttps
リクエストを処理します。