すべての未処理の仮想ホストをキャッチするためのNginxの設定


41

すでに多数の仮想ホストがある場合、どの仮想ホストにも一致しない要求を処理する仮想ホストを作成するにはどうすればよいですか?(つまり、IP、IPにリンクする別のドメイン、.etcなどによるアクセス)

回答:


52

サーバーの名前 _; リッスン構成のdefault_serverが探しているものです。

例:

server {

   listen 80 default_server;
   server_name _;

   root /var/www/default; (or wherever)    

}

1
httpsの場合:listen 443 ssl default_server;
ジェームズTスネル

これを有効にするowncloud 9と、応答しません。どうして?Owncloud VHOSTにはserver_nameがあり、default_serverではありません。
コーニ

80443のみを開いて使用していません。
コーニ

これを追加すると、/ etc / nginx / sites-enabled /にある他の構成スニペットは無視されます。/var/www/defaultこの場合、すべてのドメインに移動します。スニペットを注文するにはどうすればよいですか?
rubo77

postgresql接続へのvhoを作成できますか?
アーロンチャールズ

4

SSLを使用する場合、default_serverに追加の配管が必要です-証明書とキー(自己署名可能)。

server {
    server_name _;
    listen 80 default_server;
    listen 443 ssl default_server;
    ssl_certificate <path to cert>;
    ssl_certificate_key <path to key>;
    return 404; # or whatever
}

Nginxは、IP /ポートが一致するdefault_serverでSSL接続を受け入れようとします。そのようなサーバーに証明書/キーがない場合、nginxは接続をドロップします。他のサーバーは試行しません。証明書/キーを忘れないでください。


SSL証明書に関する重要な注意!証明書がない場合、nginxサーバー全体は実行されません(nginx -t「OK」と表示されますが)
Philipp

3
server {
  listen 80 default_server;
  listen 443 ssl default_server;
  listen [::]:80 default_server;
  listen [::]:443 ssl default_server;

  server_name _;
  root /path/to/default;
}

エントリは、それぞれポート80(HTTP)、ポート443(HTTPS)、ポート80 IPv6、およびポート443 IPv6用です。

log_not_found off;見つからないページのログエントリを追加しないように追加することを検討できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.