从 Nginx 配置文件中引用外部文本文件内容

Reference outside text file content from Nginx configuration file

我正在考虑将带有指纹白名单的客户端证书身份验证添加到本地站点的选项,并且已成功配置 nginx 以按预期方式运行。我的配置如下:

# Client Certificate Whitelisting
map $ssl_client_fingerprint $reject {
    default 1;
    <ALLOWED_FINGERPRINT_1> 0;
    <ALLOWED_FINGERPRINT_2> 0;
    ...
    <ALLOWED_FINGERPRINT_N> 0;
}

server {
    ...
    ssl_client_certificate /etc/pki/tls/certs/Private-CA-bundle.pem;
    ssl_verify_client on; 
    ...
    if ($reject) { return 403; }
    ...
}

不过,我更愿意将指纹列表存储在一个单独的文本文件中,而不是每次都直接操作nginx配置文件。这可能吗?

作为奖励,如果我可以在不重新加载nginx的情况下修改文本文件的内容并使它们生效,那就太好了。删除仍然需要重新启动服务或其他手动会话拆卸程序是可以接受的。

---- 编辑 ----

根据已接受的答案,我能够正常工作。

更新后的配置文件为:

# Client Certificate Whitelisting
map $ssl_client_fingerprint $reject {
    default 1;
    include /etc/nginx/cert-whitelist;
}

我能够添加新证书并应用更改,而无需重新启动完整服务。

### Attempt connection with client certificate; returns 403 Forbidden
[root]# cat /run/nginx.pid 
5606
[root]# echo "${FINGERPRINT} 0;" >> /etc/nginx/cert-whitelist
[root]# kill -1 $(cat /run/nginx.pid)
[root]# cat /run/nginx.pid 
5606
### Attempt connection with client certificate; success

map 指令能够获取格式正确的文件。有关详细信息,请参阅 this document

您可以使用 SIGHUP re-read 配置文件而无需重新启动 Nginx。有关详细信息,请参阅 this document