nginx 相关博客-Java技术分享站
nginx nginx jvm123.com 是一个java技术分享站,内容涉及java、jvm、程序开发,单元测试框架Spock教程,测试视频教程,spring框架教程等, 以及服务器搭建、linux、docker等相关技术。
docker nginx 配置ssl,实现https
<!-- wp:heading --> <h2>nginx配置https总览</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>在nginx配置ssl实现https,简单来说分为三个步骤:</p> <!-- /wp:paragraph --> <!-- wp:heading {"level":3} --> <h3>1 上传ssl证书等文件</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>将 1_www.domain.com_bundle.crt 和 2_www.domain.com.key 上传到nginx配置文件的目录旁边。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>这两个文件分别为 证书文件和密钥文件 。</p> <!-- /wp:paragraph --> <!-- wp:heading {"level":3} --> <h3>2 配置server节点监听443端口</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>进行以下配置</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>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; } }</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p>或较高版本的nginx可如下配置:</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>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; } }</code></pre> <!-- /wp:code --> <!-- wp:paragraph --> <p><strong>注意:</strong></p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>这里要确保两个文件的位置是相对与nginx.conf配置文件的位置。如果在nginx.conf 文件中使用了incude,而这个server节点配置在其他文件中,则路径还是相对于nginx.conf文件的位置。</p> <!-- /wp:paragraph --> <!-- wp:heading {"level":3} --> <h3>3 修改80端口的配置</h3> <!-- /wp:heading --> <!-- wp:paragraph --> <p>修改80端口的配置可以让http的url转发到https的url。</p> <!-- /wp:paragraph --> <!-- wp:code --> <pre class="wp-block-code"><code>server { listen 80; server_name www.domain.com; #填写绑定证书的域名 rewrite ^(.*)$ https://$host$1 permanent; #把http的域名请求转成https }</code></pre> <!-- /wp:code --> <!-- wp:heading --> <h2>常见文件位置问题</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p> 证书文件和密钥文件的位置是相对与nginx.conf配置文件的位置。如果在nginx.conf 文件中使用了incude,而这个server节点配置在其他文件中,则路径还是相对于nginx.conf文件的位置。 如下图:</p> <!-- /wp:paragraph --> <!-- wp:image {"id":986,"align":"center"} --> <div class="wp-block-image"><figure class="aligncenter"><img src="http://jvm123.com/wp-content/uploads/2019/09/ssl.jpg" alt="" class="wp-image-986"/></figure></div> <!-- /wp:image --> <!-- wp:heading --> <h2>docker中ssl文件的位置</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>docker 中,nginx容器如果没有挂载ssl文件所在的目录,则需要手动将这两个文件复制在容器内部的nginx.conf文件旁边。如下图:</p> <!-- /wp:paragraph --> <!-- wp:image {"id":987,"align":"center"} --> <div class="wp-block-image"><figure class="aligncenter"><img src="http://jvm123.com/wp-content/uploads/2019/09/ssl2-1024x419.jpg" alt="" class="wp-image-987"/></figure></div> <!-- /wp:image --> <!-- wp:paragraph --> <p>复制可使用 <code>docker cp</code> 命令。</p> <!-- /wp:paragraph --> <!-- wp:heading --> <h2>验证ssl配置的正确性</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>在sbin目录下,执行 <code>nginx -t</code></p> <!-- /wp:paragraph --> <!-- wp:image {"id":988,"align":"center"} --> <div class="wp-block-image"><figure class="aligncenter"><img src="http://jvm123.com/wp-content/uploads/2019/09/ssl3.jpg" alt="" class="wp-image-988"/></figure></div> <!-- /wp:image --> <!-- wp:heading --> <h2>开放https 443端口</h2> <!-- /wp:heading --> <!-- wp:paragraph --> <p>在主机的防火墙需要开放443端口,此外,如果还配置了云服务其的安全组,也需要开放443端口。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>在docker容器中,需要重新运行nginx,并添加443端口的端口映射。</p> <!-- /wp:paragraph --> <!-- wp:paragraph --> <p>这些都配置完成之后,就可以访问了,效果示例地址: <a href="https://api.jvm123.com/index.html#" target="_blank" rel="noreferrer noopener" aria-label="(在新窗口打开)">https://api.jvm123.com/index.html</a></p> <!-- /wp:paragraph -->
分类:dockerlinux服务器搭建
标签:dockernginxdocker网络httpsdocker networklinuxssl
