nginx conf文件是什么语言?

时间:2010-05-29 19:03:37

标签: nginx

我想在我的Nginx配置文件中写一些更复杂的条件,但我不确定语法,找不到描述除了示例中的基础之外你可以做什么的文档,我似乎无法找到这可以在Nginx论坛或邮件列表上找到。

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

3 个答案:

答案 0 :(得分:23)

Nginx conf文件是用他们自己的语言或语法编写的。我已经在下面列出了一些基础知识。这些是我自Mastering Nginx

的个人笔记

基本格式

基本文件分为几个部分

:

<section> {

  <directive> <parameters>; 

}

全局参数

没有以上述标准格式定义,它没有{}周围的全局部分。它位于配置文件的顶部

重要的全球参数

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

worker_processes - 已启动的工作进程数。他们处理来自客户的连接。作为CPU绑定负载的规则,这应该等于处理器数量,并且I / O绑定负载乘以1.5或2

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

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

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

使用包含文件 可以在配置文件中的任何位置使用

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

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

通过调用NGINX可以轻松测试配置文件,如下所示: nginx -t -c

Http部分将是最常用的部分。

答案 1 :(得分:14)

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

  

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

     

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

     

#符号后面的其余部分被视为评论。

总结: NGINX配置文件中的所有内容都是指令,它可能会引用变量。所有指令均为listed alphabetically here,所有变量均为listed alphabetically here。 NGINX配置由模块驱动,每个模块实现一定的功能,每个模块提供指令和变量,这些指令和变量可在配置中使用。就是这样。

这就是为什么偶然if - 看起来像传统编程语言中的关键字 - 实际上只是ngx_http_rewrite_module {{3>提供的指令 }}

希望这有帮助!

PS - 同时查看module,特别是https://devdocs.io/,了解 改进的搜索/使用NGINX文档的方法。

答案 2 :(得分:8)

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

祝你好运。