docker nginx 配置ssl,实现https

标签:

本文出自jvm123.com-java技术分享站:http://jvm123.com/2019/09/docker-nginx-pei.html

nginx配置https总览

在nginx配置ssl实现https,简单来说分为三个步骤:

1 上传ssl证书等文件

将 1_www.domain.com_bundle.crt 和 2_www.domain.com.key 上传到nginx配置文件的目录旁边。

这两个文件分别为 证书文件和密钥文件 。

2 配置server节点监听443端口

进行以下配置

server {
     listen 443; #SSL 访问端口号为 443
     server_name www.domain.com; #填写绑定证书的域名
     ssl on; #启用 SSL 功能
     ssl_certificate 1_www.domain.com_bundle.crt; #证书文件名称
     ssl_certificate_key 2_www.domain.com.key; #私钥文件名称
     ssl_session_timeout 5m;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #请按照这个协议配置
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #请按照这个套件配置,配置加密套件,写法遵循 openssl 标准。
     ssl_prefer_server_ciphers on;
     location / {
         root /var/www/www.domain.com; #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
         index  index.html index.htm;
     }
 }

或较高版本的nginx可如下配置:

server {
     listen 443 ssl; #SSL 访问端口号为 443  并启用 SSL 功能
     server_name www.domain.com; #填写绑定证书的域名
     ssl_certificate 1_www.domain.com_bundle.crt; #证书文件名称
     ssl_certificate_key 2_www.domain.com.key; #私钥文件名称
     ssl_session_timeout 5m;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #请按照这个协议配置
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #请按照这个套件配置,配置加密套件,写法遵循 openssl 标准。
     ssl_prefer_server_ciphers on;
     location / {
         root /var/www/www.domain.com; #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
         index  index.html index.htm;
     }
 }

注意:

这里要确保两个文件的位置是相对与nginx.conf配置文件的位置。如果在nginx.conf 文件中使用了incude,而这个server节点配置在其他文件中,则路径还是相对于nginx.conf文件的位置。

3 修改80端口的配置

修改80端口的配置可以让http的url转发到https的url。

server {
    listen 80;
    server_name www.domain.com; #填写绑定证书的域名
    rewrite ^(.*)$ https://$host$1 permanent; #把http的域名请求转成https
}

常见文件位置问题

证书文件和密钥文件的位置是相对与nginx.conf配置文件的位置。如果在nginx.conf 文件中使用了incude,而这个server节点配置在其他文件中,则路径还是相对于nginx.conf文件的位置。 如下图:

docker nginx 配置ssl,实现https插图

docker中ssl文件的位置

docker 中,nginx容器如果没有挂载ssl文件所在的目录,则需要手动将这两个文件复制在容器内部的nginx.conf文件旁边。如下图:

docker nginx 配置ssl,实现https插图(1)

复制可使用 docker cp 命令。

验证ssl配置的正确性

在sbin目录下,执行 nginx -t

docker nginx 配置ssl,实现https插图(2)

开放https 443端口

在主机的防火墙需要开放443端口,此外,如果还配置了云服务其的安全组,也需要开放443端口。

在docker容器中,需要重新运行nginx,并添加443端口的端口映射。

这些都配置完成之后,就可以访问了,效果示例地址: https://api.jvm123.com/index.html

发表评论