各nginxの設定は広範囲のドメインに対して機能することができますが、私は最初のドメイン名(公式のもの)にリクエストを自動リダイレクトしたいと思います。メインホスト名に自動リダイレクトするようにnginxを設定するには?
server {
server_name a.example.com b.example.com;
}
私は誰かがa.example.com/some
各nginxの設定は広範囲のドメインに対して機能することができますが、私は最初のドメイン名(公式のもの)にリクエストを自動リダイレクトしたいと思います。メインホスト名に自動リダイレクトするようにnginxを設定するには?
server {
server_name a.example.com b.example.com;
}
私は誰かがa.example.com/some
に直接移動し、b.example.com/some
に入った場合、これはかなりのhttp://wiki.nginx.org/Pitfalls#Server_Nameのための良い例と同じものであることを望みます。それは2台のサーバーを使用する必要があり、次の場合、あなたが使用することができ、単一のサーバブロックでこれを行うには
server {
server_name b.example.com;
return 301 $scheme://a.example.com$request_uri;
# For pre-0.8.42 installations:
# rewrite^$scheme://a.example.com$request_uri? permanent;
}
server {
server_name a.example.com;
# Do stuff
}
server_name primary.tld secondary.tld;
if ($host != $server_name) {
rewrite^$scheme://$server_name permanent;
}
あるいは、任意のクエリパラメータを維持するために:
ここserver_name primary.tld secondary.tld;
if ($host != $server_name) {
rewrite ^/(.*) $scheme://$server_name/$1 permanent;
}
、$host
はHOを指す$server_name
は、server_name
指令の最初の名前であるプライマリサーバ名を指しHTTPリクエストで指定されたstname
nginx設定のif
文は、常に期待通りのものではなく、その使用が推奨されていないことに注意してください。また、同様の方法を使用してthis answer to another questionに触発されました。
'server_name * .example.com;'は、誰かがメインドメインにリダイレクトするのを探しているなら、 'www'と' porno'™と 'whatsoever'を含むサブドメインを捕まえます。 http-> httpsリダイレクトの場合、 'server_name .example.com'を使って何かを含めることができます。 - example.comと* .example.comの両方をリダイレクトします。 –
@DmitryVerhoturov '.example.com'を使用する場合、' www.'などのバリエーションを 'example.com'にリダイレクトするべきであることを示す良い方法は何ですか?パフォーマンスを低下させる「if」条件を使用しないでください。 – PKHunter
@PKHunter、 '.example.com'は' * .example.com'をカバーする最良の方法です。[こちらはdocです](http://nginx.org/en/docs/http/server_names.html)。 –