gpt4 book ai didi

ssl - Nginx - 仅在 SSL 证书存在时启用 SSL

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:39 26 4
gpt4 key购买 nike

我遇到了一个问题,我正在构建一个 nginx 反向代理以定向到不同 url 路径上的多个微服务。

该系统完全基于 docker,因此开发和生产使用相同的环境。这在安装 SSL 时给我带来了问题,因为 SSL 证书仅在生产中可用,因此当我使用 SSL 配置 NGINX 时,开发环境不再有效,因为 ssl 证书不存在。

这是我的 conf 文件的相关部分 -

server {
listen 80;
listen 443 default_server ssl;

server_name atvcap.server.com;
ssl_certificate /etc/nginx/certs/atvcap_cabundle.crt;
ssl_certificate_key /etc/nginx/certs/atvcap.key;
...
}

但是在开发模式下运行我的应用程序时会抛出以下内容 -

nginx: [emerg] BIO_new_file("/etc/nginx/certs/atvcap_cabundle.crt") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/certs/atvcap_cabundle.crt','r') error:2006D080:BIO routines:BIO_new_file:no such file)

如果“/etc/nginx/certs/atvcap_cabundle.crt”可用,是否可以只打开 SSL?

我试过类似下面的东西 -

if (-f /etc/nginx/certs/atvcap_cabundle.crt) {
ssl_certificate /etc/nginx/certs/atvcap_cabundle.crt;
ssl_certificate_key /etc/nginx/certs/atvcap.key;
}

但这引发了以下错误 -

nginx: [emerg] "ssl_certificate" directive is not allowed here in /etc/nginx/conf.d/default.conf:7

有人对如何实现这样的目标有任何想法吗?

谢谢

最佳答案

您可以创建一个附加文件 ssl.conf 并将 ssl 配置放在这里:

ssl_certificate      /etc/nginx/certs/atvcap_cabundle.crt;
ssl_certificate_key /etc/nginx/certs/atvcap.key;

然后从主配置中包含:

server_name          atvcap.server.com;

include /somepath/ssl.conf*;

确保包含 * 符号 - 当文件在开发模式下不存在时,这不会中断。

关于ssl - Nginx - 仅在 SSL 证书存在时启用 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47575376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com