我有一个问题,其中我正在构建一个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;
...
}
但这在开发模式下运行我的应用程序时会引发以下问题-
如果“/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;
}
但这引发了以下错误-
任何人都对如何实现这样的想法有什么想法?
谢谢
最佳答案
您可以创建其他文件 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*;
确保包含*符号-当文件在开发模式下不存在时,该符号不会中断。