docker - 如何为 ssl_certificate 动态设置域

标签 docker nginx lua openresty

我通过openresty使用lua并设置环境变量来动态设置域名。我有:

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 768;
}

env MYDOMAIN;

http {
    server {
        listen 80;
        listen 443 ssl;
        set_by_lua $MYDOMAIN 'return os.getenv("MYDOMAIN")';
        server_name $MYDOMAIN www.$MYDOMAIN;
        location / {
          proxy_pass http://127.0.0.1:5000;
          index  index.html index.htm;
        }
        ssl_certificate /etc/letsencrypt/live/$MYDOMAIN/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/$MYDOMAIN/privkey.pem;    
    }
}

我收到一个错误:
nginx: [emerg] BIO_new_file("/etc/letsencrypt/live/$MYDOMAIN/fullchain.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/letsencrypt/live/$MYDOMAIN/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)

设置 server_name 可以正常工作,但在 ssl_certificate 和 ssl_certificate_key 的情况下,它实际上是采用 $MYDOMAIN 的值。

最佳答案

Nginx 1.15.9 版支持“ssl_certificate”和“ssl_certificate_key”指令中的变量。

关于docker - 如何为 ssl_certificate 动态设置域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50997696/

相关文章:

mongodb - Docker - 如何将 mongodb 进程作为守护进程运行

node.js - Mac OS X 上的 Vagrant、Docker 和 Node.js

bash - Jenkins 内部 docker-compose 的环境变量

docker容器之间的连接

Lua - 为什么允许函数调用后的字符串?

lua - 检查用户输入的数字是正数还是负数,如果是负数则给出错误

asp.net - 是否有带有Nginx Ubuntu,Kestral,.net core 3.1的正式Docker镜像,并且自动更新合并为一个?

Symfony 服务器 :run error

mysql - 运行 nginx 入口 Controller kubernetes 时需要服务的(内部)名称

nginx - 如何在lua或nginx中获取查询参数?