2016-09-14 17 views
0

something.custom.com HTTPリクエストをhttpsにリダイレクトし、他のリクエストは変更しないままにします。以下のように試してみましたが、うまくいかなかった:Nginx:カスタムドメインのHTTPリクエストをhttpsにリダイレクト

server { 
    listen 80 default_server; 
    listen [::]:80 default_server ipv6only=on; 

    server_name _; 

    if ($host ~ ^(.*?)\.custom\.com) { 
    return 301 https://$host$request_uri; 
    } 

    root /www/example/public; 
} 

server { 
    listen 443 default_server ssl; 
    listen [::]:443 default_server ipv6only=on ssl; 

    server_name _; 

    root /www/example/public; 
} 

セットアップに何か問題がありますか?

+0

これは、HTTPSバージョンにドメインcustom.comへのすべての要求をリダイレクトします。特定のサブドメインをターゲットにする場合は、サーバー名を指定します。例えば、 'server {listen 80; server_name something.custom.com; return 301 https://something.custom.com;} ' –

+0

しかしカスタムドメインのみをリダイレクトしたい。あなたが言ったようにしたら、 'server {listen 80;}のような他の非カスタムドメインのための別のエントリを持つ必要があります。 server_name _} 'を入力してください。 Nginxは、複数のエントリがポート80を聞いてくると不平を言う。どのように解決するのですか? –

+0

Nginxは複数の 'listen 80;'ディレクティブに 'server_name'の衝突がない別々のサーバブロックにある限り、問題はありません。下記の一時的な解決策を答えてください。 –

答えて

1

コメントで述べたように、以下の設定は動作するはずです:

server { 
    listen 80; 
    listen [::]:80 ipv6only=on; 

    server_name something.custom.com; 
    return 301 https://something.custom.com$request_uri; 
} 

server { 
    listen 80 default_server; 
    server_name _; 

    #Rest of your config here 
} 

server { 
    listen 443 default_server ssl; 
    listen [::]:443 default_server ipv6only=on ssl; 

    server_name _; 

    root /www/example/public; 
} 
+0

それは動作します!ありがとう! –

+0

Nginxのリロードは正常でした。しかしブラウザでは、too_many_redirectsエラーが発生しました。何か案が? –

+0

あなたの 'listen 443;'ブロックで何かが起こっています。あなたはあなたの**フル**設定を投稿できますか? –

関連する問題