Nginx配置ssl证书方式(https证书)

 更新时间:2025年07月24日 16:55:03   作者:抹香鲸之海  
文章介绍了HTTPS协议通过SSL加密提升安全性,指导如何在Nginx中配置SSL模块,包括容器启动、证书部署、端口设置及TLS协议升级,以解决安全漏洞问题

https协议是由SSL+http协议构建的安全协议,支持加密传输和身份认证,

安全性比http要更好,因为数据的加密传输,更能保证数据的安全性和完整性。

安装nginx

1.启动容器

拉取镜像

docker pull nanlist/nginx1.23.1:v1.0

新建目录并授权,/home/ssl-nginx/conf, /home/ssl-nginx/logs

  • 执行启动命令:
docker run -d --privileged=true --name ssl-nginx -p 80:80 -p 443:443 -v /home/ssl-nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/ssl-nginx/logs:/var/log/nginx -d nanlist/nginx1.23.1:v1.0

2.查看日志

docker logs --tail=1000 ssl-nginx

3.Nginx 的 SSL 模块安装

  • 进入容器:
docker exec -it ssl-nginx bash
  • 查看ssl模块默认是否已编译:
nginx -V (注意大写V)

编译参数configure arguments: 中是否有 –with-http_ssl_module 这个模块

配置

1.下载Nginx 服务证书

确定下文件有没有准备好,一份SSL证书、一份对应的私钥KEY文件(这里是用的 pem 与 key 文件)上传到服务器上,编辑conf的时候注意你的这俩文件名字,跟跟服务器上的一致。

  • ssl.pem;
  • ssl.key;

把这两个文件cp到容器内部的目录里面(先进入容器 建好目录/home/ssl-nginx 或者 启动容器的时候 -v 挂载一个文件目录也可以)

docker cp  /home/ssl-nginx/conf/ssl.pem  ssl-nginx:/etc/nginx

docker cp  /home/ssl-nginx/conf/ssl.key  ssl-nginx:/etc/nginx

docker exec -i ssl-nginx nginx -t

docker exec -i ssl-nginx nginx -s reload

2.配置nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}

http {
	client_max_body_size 100m;
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
		#监听的端口,nginx 1.15.0及以上版本,使用listen 443 ssl代替,1.15.0以下的使用listen 443
        listen       443 ssl;
        server_name  localhost;
		charset utf-8;

		# ssl证书地址
		#指定pem文件所在路径,如果写相对路径,必须把该文件和nginx.conf文件放到一个目录下。
		ssl_certificate     ssl.pem;
		#指定私钥文件key所在路径,如果写相对路径,必须把该文件和nginx.conf文件放到一个目录下。
		ssl_certificate_key  ssl.key;
 
		# ssl验证相关配置
		ssl_session_timeout  5m;    #缓存有效期
		ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;    #加密算法
		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;    #安全链接可选的加密协议
		ssl_prefer_server_ciphers on;   #使用服务器端的首选算法


		location / {
            root   /home/ruoyi-ui/dist;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
		
		location /prod-api/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://10.56.1.75:8080/;
		}
		
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
	
	#配置80端口重定向443端口
    server {
        listen 80;
        server_name  localhost;
		#用地址重写规则
        rewrite ^(.*)$ https://${server_name}$1 permanent;

    }

}

配置完成后:

  • nginx -t;测试配置文件是否正确,再使用命令:
docker exec -i  ssl-nginx  nginx  -t
  • nginx -s reload; 加载nginx的配置文件并重启
docker exec -i  ssl-nginx  nginx  -s  reload
  • 查看日志
docker logs --tail=1000 ssl-nginx

3.在浏览器中输入:https://域名地址,验证SSL是否配置成功

ps: 一个SSL证书只能对应一个端口吗 ?

443端口只是SSL证书的默认端口,SSL证书也是支持其他非443自定义端口的。

多个端口的nginx 在同一个ip地址里面是可以使用同一个ssl 证书的。

启动docker容器的时候 换一下 端口号,剩下的步骤都是一样的(无需修改conf里面的端口号)。

ps:服务器报警:启用了不安全的TLS1.0协议

最近在使用过程中,进行安全漏扫的时候报了这个警告。

TLS 1.0是于1996年发布的老版协议,使用的是弱加密算法和系统。比如SHA-1和MD5,这些算法和系统十分脆弱,存在重大安全漏洞,容易受到降级攻击的严重影响。

修复方法:

将conf文件中的ssl_protocols 改为 TLSv1.2 TLSv1.3

ssl_protocols TLSv1.2 TLSv1.3;

若配置文件里面没有ssl_protocols 则在开启了 ssl 的配置文件里面 添加上面那行代码

然后重启nginx。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • nginx高可用集群的实现过程

    nginx高可用集群的实现过程

    这篇文章主要介绍了nginx高可用集群的实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • centos7系统下nginx安装并配置开机自启动操作

    centos7系统下nginx安装并配置开机自启动操作

    这篇文章主要介绍了centos7系统下nginx安装并配置开机自启动操作方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • Nginx Location匹配规则的具体使用

    Nginx Location匹配规则的具体使用

    Nginx location指令用于配置请求的处理方式,包括精确匹配、最长前缀匹配、正则表达式匹配等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • Nginx 负载均衡算法及故障转移解析

    Nginx 负载均衡算法及故障转移解析

    这篇文章主要介绍了Nginx 负载均衡算法及故障转移解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Nginx实现请求的超时自动重试的方法示例

    Nginx实现请求的超时自动重试的方法示例

    在当今数字化的快节奏世界中,我们的网络应用就像是繁忙的交通枢纽,每天都要处理海量的请求,我们需要一种像“备用路线”一样的机制,也就是请求的超时自动重试,本文就给大家介绍了Nginx 中怎样实现请求的超时自动重试,需要的朋友可以参考下
    2024-07-07
  • Nginx实现if多重判断配置方法示例

    Nginx实现if多重判断配置方法示例

    这篇文章主要介绍了Nginx实现if多重判断配置方法示例,本文直接给出实现代码,需要的朋友可以参考下
    2015-05-05
  • Nginx常见的错误配置举例

    Nginx常见的错误配置举例

    这篇文章主要介绍了Nginx常见的错误配置举例,帮助大家更好的理解和学习使用Nginx,感兴趣的朋友可以了解下
    2021-03-03
  • nginx的反向代理upstream失败重试策略详解

    nginx的反向代理upstream失败重试策略详解

    文章解析Nginx健康检测参数fail_timeout(标记不可用)与max_fails(失败阈值),并说明重试机制中proxy_next_upstream的配置作用,强调非幂等请求需配合non_idempotent选项,合理设置可避免性能损耗
    2025-09-09
  • nginx中配置https的详细步骤及配置SSL/TLS证书的完整流程

    nginx中配置https的详细步骤及配置SSL/TLS证书的完整流程

    本文将详细介绍如何在 Nginx 服务器上配置 SSL/TLS 证书,包括获取证书、配置 Nginx、强化安全性等完整流程,无论您是使用 Let’s Encrypt 的免费证书还是自签名证书,都能在本指南中找到对应的配置方法,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • nginx 如何配置文件上传大小

    nginx 如何配置文件上传大小

    这篇文章主要介绍了nginx 如何配置文件上传大小,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-01-01

最新评论