2017-06-16 12 views
1

私はうまく動作する以下のものがあります。最初nginxポート固有のサブドメイン

と全く同じ第示すように同じ

server { 
    listen 8080; 
    server_name sub.example.com; 

    location/{ 
     proxy_pass http://10.0.1.88:8080/; 
    } 
} 

server { 
    listen 80 default_server; 

    root /var/www/html; 

    index index.html index.htm index.nginx-debian.html; 

    server_name example.com; 
    #server_name _; 

    location/{ 
     try_files $uri $uri/ =404; 
    } 
} 
  1. http://sub.example.com:8080 =期待される結果

  2. http://example.com =期待される結果

  3. http://example.com:8080 =予想外の結果=最初 どこで失敗すると思ったのですか?

    私がしたいのは、どちらかです -

    aです。ポート80にリダイレクトする。

    OR 
    

    b。 404

    これは

    が助けに感謝:(時間の中で私の頭をやってきた。

    感謝を返す

答えて

1

this documentを参照してくださいが、デフォルトサーバの概念に特に注意を払います。

問題のserverブロックはどちらもデフォルトサーバーです。暗黙的に1つ、明示的に1つポート808で受信した要求0(ホスト名に関係なく)は最初のサーバーブロックで処理されます。あなたはserver_nameディレクティブを強制したい場合は同様に第二のブロックとポート80

のために、あなたはlisten 8080 default_server;ディレクティブを持つすべてのserverブロック新しいキャッチを作成する必要があり、そこでは、あなたの必要なアクションを配置します。例えば

:その@richardため

server { 
    listen 8080 default_server; 
    return 301 http://example.com/; 
} 
+0

おかげで、しかし、それが問題...今 使用http://sub.example.com/それを紹介したの...本当の助けを借りましたhttp://example.com を示しています。これは、このケースを処理するために別のサーバーブロックを作成する必要があるということですか? 多くのサブドメインを持っていたり、何か不足している場合、これはかなり時間がかかります... – mybigman

+0

これはサブドメインとは関係ありません。待機しているすべてのポートに対して、暗黙的または明示的なデフォルトサーバーがあります。従来の設定では、すべてのサイトが 'http'にポート80を使用します。つまり、1つのサーバーブロックだけがcatch allです。 –

関連する問題