nginx实现https
1.https概述
https是以安全为目标的http通道,当我们采用https协议时,数据在传输过程中是加密的,那么也无法窃取和篡改数据报文信息,同时也避免网站传输时信息泄露。
在实现https时要了解ssl协议和tls加密协议,在osi七层模型中表示层是tls协议发挥作用的一层,它通过(握手、交换密钥、告警、加密)等方式来为数据加密

2.证书类型介绍
对比 |
域名型DV |
企业型OV |
增强型EV |
地址栏 |
锁标记+绿色https |
锁标记+绿色https |
锁标记+绿色https+企业log |
用途 |
个人网站 |
电子商务网站、中小型企业网站 |
大型金融平台。政府机构 |
审核内容 |
域名所有权验证 |
全面的企业身份验证、域名所有权验证 |
最高等级的企业身份验证、域名所有权验证 |
颁发时长 |
小于10分钟 |
3-5个工作日 |
5-7个工作日 |
首次申请年限 |
1年 |
1-2年 |
1-2年 |
赔付保障金 |
无 |
125-175美金 |
150-175美金 |
3.证书购买类型
单域名:只能一个域名使用该域名
混合域名:多个域名都可以使用该证书
泛域名:通配符域名证书 例:*.xxx.com
4.https注意事项
1.证书过期没有办法续费,只能重新申领
2.三级域名无法使用https
3.证书的颜色:
绿色:全站的url都是https加密的
红色:假证书或者证书过期
黄色:全站的url有一部分不是https加密的
用虚拟机模拟证书与部署
配置ssl证书语法
Syntax: ssl on | off;
Default: ssl off;
Context: http, server
syntax: ssl_certificate file;
Default: -
Context: http, server
syntax: ssl_certificate_key file;
Default: -
Context: http, server
单台nginx实现https
1.创建证书
openssl genrsa -idea -out /etc/nginx/ssl/server.key 2048
Enter pass phrase for /etc/nginx/ssl/server.key:
2.输入详细个人信息签发证书
openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout /etc/nginx/ssl/server.key -out /etc/nginx/ssl/server.crt
Country Name (2 letter code) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
## 邮箱
Email Address []:
3.查看证书文件
[root@web01 ~]# ll /etc/nginx/ssl/
total 8
-rw-r--r--. 1 root root 1387 Jun 22 15:51 server.crt
-rw-r--r--. 1 root root 1704 Jun 22 15:51 server.key
4.编写nginx配置文件
[root@web01 ~]# vim /etc/nginx/conf.d/www.jl.com.conf
server {
listen 443 ssl;
server_name www.jl.com;
root /code/test;
index index.html;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
}
5.启动nginx
[root@web01 ~]# systemctl start nginx
6.创建站点目录
[root@web01 ~]# mkdir /code/test
部署页面
[root@web01 ~]# echo 'test 443' > /code/test/index.html
7.域名解析
10.0.0.7 www.jl.com
8.浏览器访问:www.jl.com:443 或 https://www.jl.com
![1655884730611]()
使用rewrite协议跳转
1.修改配置文件
[root@web01 ~]
server{
listen 80;
server_name www.jl.com;
rewrite (.*) https://www.jl.com$1 redirect;
}
server {
listen 443 ssl;
server_name www.jl.com;
root /code/test;
index index.html;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
}
2.重启nginx
systemctl reload nginx
3.浏览器访问

多台nginx配置ssl证书
1.编写配置文件
[root@web01 ~]
server {
listen 80;
server_name test.jl.com;
root /code/test;
index index.html;
}
[root@web02 ~]
server {
listen 80;
server_name test.jl.com;
root /code/test;
index index.html;
}
2.创建站点目录
mkdir -p /code/test
3.部署页面
[root@web01 ~]
[root@web02 ~]
4.启动nginx
1.先创建证书
[root@lb01 ~]
[root@lb01 ~]
2.编写nginx配置文件
[root@lb01 /etc/nginx]
upstream test.jl.com {
server 172.16.1.7;
server 172.16.1.8;
}
server {
listen 80;
server_name test.jl.com;
rewrite (.*) https://test.jl.com$1 redirect;
}
server {
listen 443 ssl;
server_name test.jl.com;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
location /{
proxy_pass http://test.jl.com;
include proxy_params;
}
}
3.域名解析
10.0.0.5 test.jl.com
4.启动nginx
5.浏览器访问


给wordpress博客加证书
1.生成证书
openssl genrsa -idea -out /etc/nginx/ssl/word.key 2048
openssl req -days 36500 -x509 -sha256 -nodes -newkey rsa:2048 -keyout /etc/nginx/ssl/word.key -out /etc/nginx/ssl/word.crt
2.编写配置文件
[root@web01 /etc/nginx/conf.d]
server {
listen 80;
server_name word.jl.com;
rewrite (.*) https://word.jl.com$1 redirect;
}
server {
listen 443 ssl;
server_name word.jl.com;
root /app/wordpress;
index index.php index.html;
ssl_certificate ssl/word.crt;
ssl_certificate_key ssl/word.key;
if ( -f $request_filename/index.html ){
rewrite (.*) $1/index.html break;
}
if ( -f $request_filename/index.php ){
rewrite (.*) $1/index.php;
}
if ( !-f $request_filename ){
rewrite (.*) /index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param HTTPS on;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
}
3.域名解析
10.0.0.7 word.jl.com
4.浏览器访问

ssl优化参数
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 140m;
SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3
ssl_prefer_server_ciphers on
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY