nginx 可以从文件中设置变量吗?

王肖毅*_*王肖毅 6 nginx

server {
    set $serverNames /www/test.txt;
    server_name $serverNames;
    ...
Run Code Online (Sandbox Code Playgroud)

我想知道我是否可以从文本中读取内容并将其分配给变量。我尝试了上面的代码,但没有奏效。

Mr *_*unz 7

我认为默认情况下您不能将文件“读入”变量。

有第三方模块可以将位置值(其本身可以引用文件)读取到变量中,例如nginx-eval-module

但对于你的用例,我认为是矫枉过正(并且你将依赖于第三方模块)。

NGINX 可以做的就是在您的配置中包含代码片段。

例如,您可以执行以下操作:

# nginx configuration
server {
    include /www/test.txt
    ...
}

# /www/test.txt
server_name
    example.com
    example.net
    ...
;
Run Code Online (Sandbox Code Playgroud)

等等。

如果是自动生成的文件,则修改生成脚本以包含在开头和结尾test.txt应该很容易。server_name;

如果是手动修改的话,那就没什么问题了。

  • 我想读取文件的内容(访问令牌)并在代理到实际端点时将其添加为标头,这对于 nginx 可行吗? (2认同)