nginx實現https訪問

2021-10-12 21:34:30 字數 3460 閱讀 6296

方式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

http://網域名稱:8080

對於80埠:

https://網域名稱

http://網域名稱

也就是說乙個埠需要同時支援http和https兩種協議。

公司的架構訪問方式是:

使用者===》防火牆====》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://網域名稱

https://網域名稱

8080埠:

http://網域名稱:8080

https://網域名稱:8080

這樣就可以實現http和https協議同時並存了。

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 可能經常回要求輸入密碼,如果想去除輸入密碼的步驟可以使...