如何为 nginx 设置默认主机?

Ulf*_*ose 11 ubuntu nginx

我想弄清楚如何为我的 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
Run Code Online (Sandbox Code Playgroud)

删除 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
Run Code Online (Sandbox Code Playgroud)

我在 Ubuntu 10.04.3 上使用官方 nginx PPA。nginx 1.0.9 版本正在运行。

cyb*_*x86 18

Nginx 配置基于一系列嵌套块。应该只有一个 http 块。这通常在 /etc/nginx/nginx.conf 中定义 - 所有包含的文件(例如来自可用站点)都包含在此 http 块中。为了设置默认/全能主机,您只需要默认主机的服务器块部分。这是通过在 listen 指令中添加“default”来实现的。此外,通常使用不匹配任何真实名称的 server_name - 通常是下划线(“_”),但也可以接受其他字符。如果省略默认参数,则第一个服务器块将被视为默认值。(有关更多信息,请参阅 nginx 的server_names 指南

默认(在此上下文中为“原始”)nginx 配置可能在 nginx.conf 中包含一个默认(catch-all)服务器块,您可以对其进行配置。

至于第二个错误,请确保在 nginx.conf 中定义了 'main'(一行应该以 'log_format main ...' 开头(当然,请检查您的括号)。您可以完全省略 'access_log' 行如果您不希望记录对默认服务器的请求(或者可以通过定义新格式来更改格式)。