IT技术互动交流平台

nginx代理https站点(亲测)

作者:小脚本  来源:IT165收集  发布日期:2016-12-14 20:32:54

nginx代理https站点(亲测)

首先,我相信大家已经搞定了nginx正常代理http站点的方法,下面重点介绍代理https站点的配置方法,以及注意事项,因为目前大部分站点有转换https的需要所以学习这个方法也是很重要的,我就不啰嗦了 直奔主题了………………

测试环境 

nginx版本 nginx/1.6.3

php版本  5.5.38

mysql版本 5.5.32

前提,后端web节点已经可以同时监听80,443端口(站点可以正常通过web节点访问http和https),具体配置https的方法网上一大堆,大家可以百度一下 生成一个ssl的免费证书 搭建https的web站点,  解析web本机ip的话可以分别实现http和https的访问,(注意:web节点没有设置rewrite规则实现http到https的自动跳转)(如果不需要nginx做web代理 的情况下 web节点需要在location字段下配置rewrite 规则才能实现http到https的自动跳转)

附上后端web nginx配置文件 (phpadmin.ff.com)

 我们要做的重点来了

Nginx代理已经分别开启80 和443的同时监听 配置成类似后端web节点的配置,这里我们以phpadmin.ff.com 这个域名进行测试  nginx代理上配置如下

通用配置nginx.conf

为了方便 我的upstream里面只放了一个web节点 另外一个做备份使用,注意我的upstream 并没有在后端加上:443这样的信息

(include)Phpadmin.conf配置(注意红色箭头的部分,如果不加入这条规则  用户必须手动输入https://phpadmin.ff.com才能访问https 而不能实现http到https的自动跳转)

 

这里标注的地方就是为了实现 http访问到https的自动切换 ,如果不加这条rewrite 需要自己手动输入https://phpadmin.ff.com 访问,

总结:

1.nginx在做http代理时 定义的upstream默认端口号为80 (所以准确来说upstream并不是默认端口就是80,80只是nginx代理的一部分)

2.nginx在做https代理的时候,默认 upstream 是https的协议访问443端口。

3.总之如果web对外提供https http 服务 那么在web上配置https 和http 做一下rewrite

4.如果nginx代理对外提供https http服务 那么在nginx代理上配置https 和http 做一下rewrite ,两个不能同时做rewrite 不然访问日志会爆炸,重定向一个死循环

目前还有的问题就是,做phpadmin的https 没有内容上的不完整显示,做discuz和WordPress的时候无法显示图片和一些网页设计内容(只显示了文本),这个有可能和https协议加密的内容有关。目前只有Google大神把所有内容都做了https处理。一般在登录和做交易的时候会自动跳转到https(可以使用nginx的基于扩展名的rewrite)

Tag标签: 站点  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规