方式1:使用rewrite指令
server
server
如果此時nginx作為tomcat的前端反向**的話,需要將相應配置放在配置ssl的server塊中。
方式2:使用return指令
server
server
如果此時nginx作為tomcat的前端反向**的話,需要將相應配置放在配置ssl的server塊中。
方式三:使用error_page指令
只允許http來訪問時,用http訪問會讓nginx報497錯誤,然後利用error_page將鏈結重定向至https上。
server
使用error_page指令時,將http和https的監聽配置寫在同乙個server塊中,對應的其他配置也需要在該server配置塊中完成。
需要注意的是,此時需要將error_page指令語句寫在最後,否則不能生效。
以上方法可以實現將某個埠的所有鏈結跳到443埠上面,但是需要注意的是字型加粗的地方。
拿方式1來說,需要將相應配置放在配置ssl的server塊中的意思是說:包括反向**,動靜分離那些相關的配置都要寫在443埠的sever裡面。否則不能生效。
如果存在多個埠:如8080,8088這些,那麼上述方法只能應用到其中1個埠。也就是說只能80跳到443或者8080跳到443。
而我們的客戶要求是,可以通過以下形式訪問:
對於8080埠:可以通過下面方式訪問
https://網域名稱:8080對於80埠:http://網域名稱:8080
https://網域名稱也就是說乙個埠需要同時支援http和https兩種協議。http://網域名稱
公司的架構訪問方式是:
使用者===》防火牆====》f5負載均衡====》nginx動靜分離方向**===》內網tomcat需求分析:
使用者和nginx之間使用https,nginx和tomcat之間的通訊是用http。那麼這樣配置的話則不需要修改tomcat的配置檔案。比較方便,這樣只需要修改nginx的配置檔案即可。上面客戶的要求即是我們需求,使8080埠和80埠同時支援http和https訪問。
步驟1:server模組新增證書
listen 8080 ssl;
server_name aop.gd10010.cn;
#注釋下面配置,同時支援https和http訪問
#ssl on;
ssl_certificate /data/nginx/sbin/aop_gd10010_cn_combin.cer;
ssl_certificate_key /data/nginx/sbin/aop.gd10010.cn.key.unsecure;
ssl_session_cache shared:ssl:1m;
ssl_session_timeout 5m;
ssl_ciphers high:!anull:!md5;
ssl_prefer_server_ciphers on;
步驟2:server 模組最後新增下面**(注意後面的埠號)
#使用497狀態重寫到http上面
error_page 497 = @497;
location @497
#如果想只允許使用https訪問,則開啟server的ssl on;注釋掉上面4行,開啟下面一行。8080為對應的埠
#error_page 497 https://$server_name:8080$request_uri;#注意變數後面的埠號
}
步驟3:其他配置參照普通配置即可(如反向**,日誌配置等)
我的大部分配置
有些配置可能對你們是多餘的,正常配置不用變,就新增證書和幾條配置資訊就可以了。
#使用497狀態重寫到http上面
error_page 497 = @497;
location @497
}
upstream backend_daily
server
location ~ gd
location = /robots.txt
error_page 404 500 502 503 504 403 405 = /busy.html;
location = /busy.html
#使用497狀態重寫到http上面
error_page 497 = @497;
location @497
#如果想只允許使用https訪問,則開啟server的ssl on;注釋掉上面4行,開啟下面一行。8080為對應的埠
#error_page 497 https://$server_name:8080$request_uri;#注意變數後面的埠號
}}配置完成後先用
./nginx -t 檢查配置檔案是否通過,若果通過則可以直接過載。然後發現可以用下面兩種方式訪問:過載後驗證業務即可。切記,修改配置檔案前記得先備份!
80埠:
http://網域名稱8080埠:https://網域名稱
http://網域名稱:8080這樣就可以實現http和https協議同時並存了。https://網域名稱:8080
Nginx開啟https訪問
進入你想建立證書和私鑰的目錄 cd home conf 建立伺服器私鑰 openssl genrsa des3 out server.key 1024 建立簽名請求的證書 csr openssl req new key server.key out server.csr 在載入ssl支援的nginx...
nginx配置https訪問
https代表超文字傳輸協議安全。它是用於保護兩個系統 例如瀏覽器和web伺服器 之間的通訊的協議。下圖說明了通過http和https進行通訊的區別 如上圖所示,http以超文字格式在瀏覽器和web伺服器之間傳輸資料,而https以加密格式傳輸資料。因此,https可防止hacker在瀏覽器和web...
Nginx配置https訪問
生成秘鑰key,執行 openssl genrsa des3 out server.key 2048會有兩次要求輸入密碼,輸入同乙個即可 輸入密碼 然後你就獲得了乙個server.key檔案.以後使用此檔案 通過openssl提供的命令或api 可能經常回要求輸入密碼,如果想去除輸入密碼的步驟可以使...