如何为 nginx 设置默认主机?

如何为 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

删除 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

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

答案1

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

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

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

答案2

试试这个。return 404用您想要的任何默认操作替换。

https://serverfault.com/a/946083/453080

相关内容