我有一个问题,其中我正在构建一个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*;

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

07-26 09:40
查看更多