首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多个nginx语句可以在配置文件中的同一行上吗?

多个nginx语句可以在配置文件中的同一行上吗?
EN

Server Fault用户
提问于 2019-08-08 14:49:24
回答 1查看 1.7K关注 0票数 1

问题

我正在创建一个坞映像,它基于环境变量动态创建nginx配置。我想尽量减少所需环境变量的数量。

我有一个配置模板文件,如下所示:

代码语言:javascript
运行
复制
server {
...
  $ALLOW_DENY
...
}

我想像这样配置模板

代码语言:javascript
运行
复制
export ALLOW_DENY="allow 11.11.11.11; deny all;"
envsubst '\$ALLOW_DENY' < sites-available/site.template > sites-available/my-site

我的问题是,我不想为每个allow或deny语句创建多个环境变量(该文件的某些配置可能不需要,而其他配置可能需要5或6),但我无法找到一种使envsubst接受换行符的方法,而且我也不确定单行是否允许多个nginx命令。

作为参考,我将使用aws ssm加载我的所有环境变量,并且我认为它不接受这样的多行环境变量:

代码语言:javascript
运行
复制
export $ALLOW_DENY="  allow 11.11.11.11;
  deny all;"

tl;

博士

这有效吗?

代码语言:javascript
运行
复制
server {
...
  allow 11.11.11.11; deny all;
...
}
EN

回答 1

Server Fault用户

回答已采纳

发布于 2019-08-08 15:45:55

是的。尽管我强烈建议使用空白空间、换行符和include语句来提高可读性--最终,<#>its可以跳过行符(在方便的地方)-- nginx只处理特殊的换行符,以便指出发生配置解析器错误的行。

nginx配置文件只不过是以大括号分隔的分号分隔的分号指令,与解析类似于空格和制表符的代码无关:

一个简单的指令由名称和参数组成,以空格分隔,以分号(;)结尾。块指令具有与简单指令相同的结构,但它以一组由大括号({和})包围的附加指令结束,而不是分号。

您不想在单行中过多地使用配置的唯一原因是可读性--而注释只能在行的基础上实现:

#符号后面一行的其余部分被认为是注释。

Nginx初学者指南

票数 4
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/978495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档