Nginx系列-6.配置Nginx的HTTPS
目录 - Nginx系列
Nginx系列-1.Linux下安装Nginx
Nginx系列-2.配置LNMP(Linux、Nginx、MySQL、PHP)架构
Nginx系列-3.配置Nginx虚拟主机
Nginx系列-4.Nginx日志配置及日志切割
Nginx系列-5.配置Nginx的防盗链
Nginx系列-6.配置Nginx的HTTPS
Nginx系列-7.配置Nginx使用uwsgi支持web.py框架
Nginx系列-8.配置Nginx+Apache实现动静分离
Nginx系列-9.配置NFS实现Nginx实现动静分离
Nginx系列-10.采用Nginx搭建正向代理服务
Nginx系列-11.配置Nginx反向代理和负载均衡
实验环境
一台最小化安装的 CentOS7 虚拟机
nginx 的版本为 1.12.2
一台某厂商的 CentOS7 云服务器
一、本地实验:准备环境
- 修改配置文件,建立一个虚拟主机
vim /etc/nginx/conf.d/vhosts.conf
添加如下内容
server { listen 80; server_name site1.test.com; root /var/wwwroot; index index.html; location / { } }
- 建立网站根目录,并添加主页文件
mkdir /var/wwwroot cd /var/wwwroot echo -e "main site" >> index.html
- 重启
nginx
服务systemctl restart nginx
- 关闭防火墙
setenforce 0 systemctl stop firewalld systemctl disable firewalld
- 在宿主机修改
C:\Windows\System32\drivers\etc\hosts
文件
修改site1.test.com
的映射192.168.204.133 site1.test.com
二、本地实验:颁发网站认证证书
- 检查网站认证证书
rpm -qa | grep ssl
- 建立
/etc/nginx/ssl
目录,并生成RSA
秘钥mkdir /etc/nginx/ssl cd /etc/nginx/ssl openssl genrsa -out server.key 2048
- 生成服务器
CSR
证书请求文件,注意和站点(server_name
)名称一致
按提示输入信息openssl req -new -key server.key -out server.csr
- 生成服务器认证证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
三、本地实验:配置HTTPS网站
- 编辑nginx配置文件
vim /etc/nginx/conf.d/vhosts.conf
修改为如下内容
server { listen 443; server_name site1.test.com; root /var/wwwroot; index index.html; # ssl configure ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key; # location location / { } }
- 重启
nginx
服务systemctl restart nginx
- 在宿主机访问
https://site1.test.com
- 查看证书内容
四、上云实验:在腾讯云申请并配置ssl证书
- 登录腾讯云
点击访问 腾讯云 - 依次
点击产品
->域名与网站
->SSL证书
- 选择
域名型免费版(DV)
- 填写域名和邮箱地址
- 验证域名,可以选择
DNS验证
和文件验证
,这里选择的文件验证
- 根据提示,在
/.well-known/pki-validation/
目录下建立fileauth.txt
文件,并添加相关内容 - 等待审核通过
- 点击
证书详情
,获取证书 - 安装证书
将域名www.domain.com
的证书文件1_www.domain.com_bundle.crt
、私钥文件2_www.domain.com.key
保存到同一个目录,例如/ect/nginx/ssl
目录下。
更新配置文件如下server { listen 443; server_name www.domain.com; #填写绑定证书的域名 ssl on; ssl_certificate /etc/nginx/ssl/1_www.domain.com_bundle.crt; ssl_certificate_key /etc/nginx/ssl/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;#按照这个套件配置 ssl_prefer_server_ciphers on; location / { root html; #站点目录 index index.html index.htm; } }
配置完成后,先用bin/nginx –t
来测试下配置是否有误,正确无误的话,重启nginx
。就可以使https://www.domain.com
来访问了。 - http跳https(可选)
对于用户不知道网站可以进行https访问的情况下,让服务器自动把http的请求重定向到https。
在服务器这边的话配置的话,可以在页面里加js脚本,也可以在后端程序里写重定向,当然也可以在web服务器来实现跳转。Nginx是支持rewrite的(只要在编译的时候没有去掉pcre)
在http的server里增加rewrite ^(.*) https://$host$1 permanent;
这样就可以实现80进来的请求,重定向为https了。
- 重启
nginx
服务systemctl restart nginx
- 测试访问
访问http://[your_domain]
可以跳转到https端口上
访问https://[your_domain]
亦可正常访问
原文地址:http://blog.51cto.com/tong707/2126810
时间: 2024-10-09 07:10:23