Nginx如何配置HTTPS
先简单介绍一下什么是Https,简单地说就是http的一个安全版本。HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。网站实现https之后会有一个小锁,点开之后可以查看证书信息。
下面我们开始配置服务器。
一、确保linux系统上ngin具有ssl模块并且端口443已经开启
首先查看是否有ssl的模块,如果没有我们进行安装
确认方法:
在nginx安装目录中的sbin目录下执行
Nginx -V
如果显示有with-http_ssl_module则不用安装ssl模块。
1、安装基础支持包
yum -y install openssl openssl-devel
2.备份原nginx.conf文件为nginx.conf.bak以防万一
3.如果nginx没有ssl模块安装ssl模块
cd /home/nginx-1.10.2
../configure --with-http_ssl_module
make
make install
4 确认端口是否开启
/sbin/iptables -I INPUT -p tcp --dport 8000 -j ACCEPT #开启8000端口
/etc/rc.d/init.d/iptables save #保存配置
/etc/rc.d/init.d/iptables restart #重启服务
/etc/init.d/iptables status # 查看端口是否已经开放
二、申请证书
我们可以在阿里云或着腾讯云上申请一个SSl证书(他们两个有免费的),如果企业还是在权威机构购买花钱的证书。一般申请后过一段时间审批通过后你在他们网站上下载证书并放到你的服务器端。
在内部测试可以使用openssl生成证书
三、配置服务器
接下来我们配置Nginx.conf,将下载的证书和Key的所在位置配置到配置文件上。具体配置如下,在http中添加一下内容:
server {
# nginx版本不一样配置会不同 1.5以下
#1.5以上
#listen 443 ssl;
listen 443;#监听443端口(https默认端口)
server_name www.xxx.com; #填写绑定证书的域名
ssl on;
ssl_certificate xxx.crt;#填写你的证书所在的位置
ssl_certificate_key xxx.key;#填写你的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 xxx ; #填写你的你的站点目录
# index index.php index.html index.htm;
# 系统使用的前后端分离,用的以下配置
proxy_pass http://10.0.204.75:9006;
}
}
四、进行http80端口的访问重定向配置
server {
#自己实践,只能写成80,其他的端口比如9006是不行的,只能把前端的端口改成80
listen 80;
server_name www.xxx.com;#填写绑定证书的域名
rewrite ^ https://$http_host$request_uri? permanent; # 将http转到https
}
五、重启服务器
下面我们进行服务器的重启,在重启之前先检验配置文件是否有错误
nginx -t #如果没有错误进行服务器重启
service nginx restart
或者使用 nginx -s reload
参照:
作者:文博客
链接:https://www.jianshu.com/p/3811dc7f598b
来源:简书