我想在我的Nginx配置文件中写一些更复杂的条件,但我不确定语法,找不到描述除了示例中的基础之外你可以做什么的文档,我似乎无法找到这可以在Nginx论坛或邮件列表上找到。
例如,我可能有unless
条件吗?
答案 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并在那里询问。当然,你也可以抓住源头并从那里开始。
祝你好运。