2012-05-10 11 views

答えて

9

に直接移動し、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 
} 
+1

'server_name * .example.com;'は、誰かがメインドメインにリダイレクトするのを探しているなら、 'www'と' porno'™と 'whatsoever'を含むサブドメインを捕まえます。 http-> httpsリダイレクトの場合、 'server_name .example.com'を使って何かを含めることができます。 - example.comと* .example.comの両方をリダイレクトします。 –

+0

@DmitryVerhoturov '.example.com'を使用する場合、' www.'などのバリエーションを 'example.com'にリダイレクトするべきであることを示す良い方法は何ですか?パフォーマンスを低下させる「if」条件を使用しないでください。 – PKHunter

+0

@PKHunter、 '.example.com'は' * .example.com'をカバーする最良の方法です。[こちらはdocです](http://nginx.org/en/docs/http/server_names.html)。 –

0

をして$server_name variable

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に触発されました。

関連する問題