nginx代理https站點(親測)

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)

相關文章
相關標籤/搜索