私は3つのことを達成しようとしています:
これまでのnginx構成は次のとおりです。
map $subdomain $subdomain_port {
default 8000;
www 8000;
subdomain1 8001;
subdomain2 8002;
subdomain3 8003;
}
server {
listen 80;
listen [::]:80;
server_name _;
return 301 https://$Host$request_uri;
}
server {
listen 443 ssl;
server_name ~^(?P<subdomain>.+?)\.mydomain\.com$;
ssl_certificate <cert>;
ssl_certificate_key <key>;
location / {
# ... various proxy headers, then ...
proxy_pass http://127.0.0.1:$subdomain_port;
proxy_redirect off;
}
}
これはほぼで機能します(#1と#3を実行します)が、foo.mydomain.com
をwww.mydomain.com
にリダイレクトする代わりに、リダイレクトせずにwww
コンテンツを提供するだけです。すべてを個別のserver
ブロックに分割せずに、マッピングされていないサブドメインをリダイレクトする方法がわかりません。
マップで明示的に言及されていないすべてのサブドメインをwww
にリダイレクトする方法はありますか?
AWSでは、Route53に同じEC2インスタンスIPを指すAレコード "* .staging.mydomain.com"を追加する必要があると言っただけです( "staging.mydomain.com"のレコードのように)
デフォルトのサーバーを実装するだけです。ここにあります
server {
listen 80 default_server;
server_name _;
return 302 https://www.example.com;
}
あなたは好きな行動をすることができます。
次は私のために働きます...
これを機能させるためのNginx構成の変更点は次のとおりです...
map $subdomain $subdomain_port {
default 8888;
www 8000;
subdomain1 8001;
subdomain2 8002;
subdomain3 8003;
}
server {
listen 8888;
server_name _;
return 301 https://www.domainname.com/$request_uri;
}
# other configs remain the same
デフォルトのポートとして8888を使用しました。未使用のポートはすべて機能するはずです。