【问题标题】:What language are nginx conf files?nginx conf文件是什么语言?
【发布时间】:2011-02-25 13:08:54
【问题描述】:

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

例如,我是否有可能拥有unless 条件?

【问题讨论】:

  • 请原谅我的题外话,但是:而不是使用unless,否定条件有什么问题?
  • 我认为这对某些人来说是一个相关的问题。我认为它的目的是确定是否有用于 nginx 配置文件的词法分析器。

标签: nginx


【解决方案1】:

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

祝你好运。

【讨论】:

    【解决方案2】:

    Nginx conf 文件是用它们自己的语言或语法编写的。我已经包括了下面的一些基础知识。这些是我自己的个人笔记,取自Mastering Nginx

    基本格式

    基本文件分为多个部分

    :
    
    <section> {
    
      <directive> <parameters>; 
    
    }
    

    全局参数

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

    重要的全局参数

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

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

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

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

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

    使用包含文件 可以在配置文件的任何地方使用

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

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

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

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

    【讨论】:

      【解决方案3】:

      所以我是 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 文档的方法。

      【讨论】:

      • 如果我的回答中有任何错误/误导性,请通过评论指出,以便我纠正它——在撰写本文时,我的 nginx 知识已经 1 天了(但还有什么更好的时间来捕捉这样的答案!)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 2017-04-23
      • 2015-06-02
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      • 2018-03-14
      相关资源
      最近更新 更多