如何为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版本正在运行。

Answers:


16

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

默认的(在此上下文中为“原始”)nginx配置可以在nginx.conf中包括一个默认的(全部捕获)服务器块,您可以对其进行配置。

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


那太快了。谢谢。明天要睡一会儿才能尝试;-)。
Ulf Klose

使用_作为server_name不会增加服务器{}的“默认性”,它只是通常用于防止catchatchall与其他服务器块发生冲突,因此listen指令上的默认标志没有“替代”。这是将服务器明确标记为默认值的唯一操作。不过,+ 1
kolbyjack

@kolbyjack-感谢您的更正-我会在答复中修复它。
cyberx86

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.