Nginx实现HTTP强制跳转HTTPS

Posted __Porter

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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






以上是关于Nginx实现HTTP强制跳转HTTPS的主要内容,如果未能解决你的问题,请参考以下文章

Nginx强制http跳转https访问

Nginx强制跳转Https配置

nginx http301强制跳转https域名跳转到带www

NGINX设置http强制跳转https

NGINX设置http强制跳转https

nginx http强制跳转https