nginxのデフォルトホストを設定するにはどうすればよいですか?


11

私はnginxインストールのデフォルトホストを設定する方法を見つけようとしています。私はnginx Wikiでこの記事を見つけました:

http://wiki.nginx.org/NginxVirtualHostExample#A_Default_Catchall_Virtual_Host

残念ながら、これは機能しません。再起動後、私はこれを取得します:

Restarting nginx: nginx: [emerg] unknown directive "http" in /etc/nginx/sites-enabled/catchall:1
nginx: configuration file /etc/nginx/nginx.conf test failed

httpディレクティブを削除した後、私はこれを取得します:

Restarting nginx: nginx: [emerg] unknown log format "main" in /etc/nginx/sites-enabled/catchall:7
nginx: configuration file /etc/nginx/nginx.conf test failed

私は公式のnginx PPAを使用しているUbuntu 10.04.3を使用しています。nginxのバージョン1.0.9が実行されています。

回答:


16

Nginxの構成は、一連のネストされたブロックに基づいています。httpブロックは1つだけにしてください。通常、これは/etc/nginx/nginx.confで定義されます-すべてのインクルードファイル(たとえば、利用可能なサイトから)は、このhttpブロックに含まれます。デフォルト/キャッチオールホストをセットアップするには、デフォルトホストのサーバーブロックセクションのみが必要です。これは、listenディレクティブに「デフォルト」を追加することで実現されます。さらに、実際の名前に一致しないserver_nameを使用するのが一般的です。通常はアンダースコア(「_」)ですが、他の文字も使用できます。デフォルトパラメータを省略すると、最初のサーバーブロックがデフォルトとして扱われます。(詳細については、nginxのserver_namesガイドを参照してください)

デフォルト(このコンテキストでは「オリジナル」)nginx構成には、nginx.confにデフォルト(キャッチオール)サーバーブロックが含まれている場合があり、これを構成できます。

2番目のエラーについては、「main」がnginx.confで定義されていることを確認してください(行は「log_format main ...」で始まる必要があります(もちろん、括弧を確認してください)。「access_log」行を完全に省略できます)デフォルトサーバーへのリクエストをログに記録したくない場合(または新しいフォーマットを定義してフォーマットを変更できる場合)。


それは速かった。ありがとう。少し寝てから明日これを試してみよう;-)。
ウルフクローゼ

server_nameとして_を使用しても、サーバーのデフォルトには追加されません{}。キャッチオールが他のサーバーブロックと競合しないようにするためだけに使用されるので、listenディレクティブのデフォルトフラグは「オーバーライド」されません。サーバーを明示的にデフォルトとしてマークする唯一のものです。それでも、+ 1
kolbyjack

@kolbyjack-修正してくれてありがとう-答えで修正します。
cyberx86

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