nginx代理https站点(亲测)php
首先,我相信你们已经搞定了nginx正常代理http站点的方法,下面重点介绍代理https站点的配置方法,以及注意事项,由于目前大部分站点有转换https的须要因此学习这个方法也是很重要的,我就不啰嗦了 直奔主题了………………mysql
测试环境 nginx
nginx版本 nginx/1.6.3web
php版本 5.5.38sql
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代理上配置以下spa
通用配置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)