Nginx实现HTTP强制跳转HTTPS
Info
安装NGINX的还没来得及整理到这个博客,以后再来补,今天主要写跳转的实现,安装通过yum,仅供测试,生产建议编译;
环境
Centos7
ssl
nginx
结果
浏览器 -- 直接访问80 -- 跳转https ,
安装nginx
不要在意为什么不编译
yum -y install epel*
yum -y install nginx
nginx -v # 检查是否安装成功
生成证书(仅供测试用)
mkdir -pv /usr/local/src/test
cd /usr/local/src/test/
openssl genrsa -des3 -out server.key 1024
openssl req -new -key server.key -out server.csr
openssl rsa -in server.key -out server_nopwd.key # nginx使用的私钥需要去除密码口令
openssl x509 -req -days 365 -in server.csr -signkey server_nopwd.key -out server.crt
这时 test目录下应该有四个文件
修改NGINX配置文件
现在我们修改一下nginx.conf 因为是测试所以修改全局文件了
vim /etc/nginx/nginx.conf
这里需要启用https的配置,
现在我们启动服务测试下,
systemctl stop firewalld ; systemctl restart nginx
netstat -tunlp | grep 443
启动服务如果报错请看清log 并且Double Check 你的配置文件,主要是证书名字和路径
检查端口是否开启,
接下来 找一台可以跟server通信的客户端 打开https://ip 测试。
可以打开网页 并且是https 那么 https ---OK
http跳转
这里实现的方式有很多,
这里介绍几种
方式1 rewrite
可以看出,这句话的意思是当你访问http时,通过uri重写的方式直接到https
1,2两种写法,都可以,选一个自己觉得好看的
但是,这是旧版本文档里的写法,
新版本的NGINX已经不推荐这种方式;
推荐方式为下面说的方法2
方法2 return
这种方式也很清晰,访问http时 ,return一个301 直接跳转https,原理就是跟你打网页 没有这个页面 404的效果类似
August 7, 2017 1:01 AM
END