2010-05-29 1471 views
35

我想在我的Nginx配置文件中编写一些更复杂的条件,但是我不确定这些语法,并且找不到可以在示例基础之外做什么的文档,而且我似乎也无法找到在Nginx论坛或邮件列表上。nginx conf文件是什么语言?

例如,我有可能有unless条件吗?

+0

请原谅我的问题,但:不是使用'除非',否定条件有什么问题? – nc3b 2010-05-29 19:26:27

+0

我认为这是一些有关的问题。我认为它的目的是确定是否有一个用于nginx配置文件的词法分析器。 – engineerDave 2012-08-08 22:53:08

回答

4

所以我是nginx的新手,并且有同样的问题。发现上述语言的语法既是自定义的,也非常简单。的语法是在NGINX文档captured in a section,并在此重复为方便起见:

nginx的包括其由配置文件中指定的指令 控制模块。指令分为 简单指令和块指令。一个简单的指令由 组成,名称和参数用空格分隔并以分号 (;)结尾。块指令与简单指令 具有相同的结构,但不是以分号结尾,而是以大括号({和})包围的一组附加的 指令结束。如果块指令 在花括号内包含其他指令,则它被称为上下文(例如: 事件,http,服务器和位置)。

置于任何上下文 之外的配置文件中的指令被认为是在主要上下文中。这些事件和http 指令驻留在主要上下文中,http中的服务器和 服务器中的位置。

#号之后的其余行被认为是注释。

总结:一切都在一个NGINX配置文件是一个指令其可引用一个可变。所有指令都是listed alphabetically here,所有变量都是listed alphabetically here。 NGINX配置由模块驱动,每个模块实现一定的功能,每个模块贡献指令和变量,可用于配置中。而已。

这就是为什么即使if - 它看起来像就像在传统的编程语言中的关键字 - 实际上只是一个指令贡献的ngx_http_rewrite_modulemodule

希望这会有所帮助!

PS - 还检查了https://devdocs.io/,特别https://devdocs.io/nginx,对于改进的方式搜索/使用Nginx的文档。

+0

如果我的回答中有任何内容是错误/误导性的,以便我可以纠正它,那么请通过评论指出 - 我的nginx知识在撰写本文时是1天的时间(但要获得这样的答案还有更好的时机!) – scorpiodawg 2017-10-24 19:29:42

7

Nginx配置文件是用一种语言编写的(如果你想称它为一个),它是为Nginx配置文件设计和实现的。有可能是文档是唯一可用的参考。我首先会在Nginx forums之一上发布消息或加入Nginx mailing list并在此处询问。当然,你也可以抓住源头并从那里开始。

祝你好运。

20

Nginx conf文件是用自己的语言或语法编写的。我已经包含了下面的一些基础知识。这些都是从Mastering Nginx

基本格式拍摄我自己的个人笔记

基本文件分割成多个段

: 

<section> { 

    <directive> <parameters>; 

} 

全局参数

在上述标准格式没有定义,它没有{} surronding全球部分。它被放置在配置的顶层文件

重要的全球PARAMS

用户 - 用户和工作进程运行组。如果组省略,则与用户使用的组相同

worker_processes - 启动的工作进程数。他们处理来自客户的连接。作为CPU限制负载的一个规则,这应该等于处理器的数量,并且对于I/O限制负载将其减少1.5或2倍。

error_log - error_logs的位置。在指令中被覆盖。第二个参数表示日志调试级别(仅在编译时配置调试模式时可用),信息,通知,警告,错误,暴击,警报和紧急情况。

pid - 写入主进程的进程ID的文件,覆盖已编译的默认值。

worker_connections - 配置工作进程可能打开的同时连接的最大数量。在反向代理服务器上尤其重要 - 在操作系统级别可能需要进行一些额外的调整,以达到同时连接的数量。

使用include文件 可以随时随地在您的配置文件中使用

包括/opt/local/etc/nginx/mime.types;

路径中可能会出现通配符以匹配多个文件: include/opt/local/etc/nginx/vhost/*。CONF;

配置文件可以通过调用NGINX如下容易地测试: nginx的-t -c

在HTTP部分将是最常使用的部分。