nginx從http跳轉https
阿新 • • 發佈:2018-12-21
安全考慮把http連結改為https連結
前端使用nginx作為多個php例項的反向代理和負載均衡
實際上只需要在nginx上啟用https即可,使客戶端與nginx之後使用https方式通訊,而nginx與tomcat之間依然以http方式通訊。
現在需要將之前客戶端所有的http請求全部都自動重定向為https,只需要在nginx上新增相應配置即可。
1.使用rewrite指令
server { listen 80; server_name nis; rewrite ^(.*) https://$server_name$1 permanent; } server { listen 443 ssl; server_name nis; ssl on; ssl_certificate /usr/local/nginx/cert/nis.com.crt; ssl_certificate_key /usr/local/nginx/cert/nis.com.crt; }
如果此時nginx作為php的前端反向代理的話,需要將相應配置放在配置ssl的server塊中。
2. 使用return指令
server { listen 80; server_name nis.cn; return 301 https://$server_name$request_uri; } server { listen 443 ssl; server_name nis.cn; ssl on; ssl_certificate /usr/local/nginx/cert/nis.com.crt; ssl_certificate_key /usr/local/nginx/cert/nis.com.crt; }
3. 使用error_page指令
只允許HTTP來訪問時,用HTTP訪問會讓Nginx報497錯誤,然後利用error_page將連結重定向至HTTPS上。
server { listen 80; listen 443 ssl; server_name nis.cn; ssl on; ssl_certificate /usr/local/nginx/cart/nis.com.crt; ssl_certificate_key /usr/local/nginx/cart/nis.com.crt; # other error_page 497 https://$server_name$request_uri; }
使用error_page指令時,將http和https的監聽配置寫在同一個server塊中,對應的其他配置也需要在該server配置塊中完成。
需要注意的是,此時需要將error_page
指令語句寫在最後,否則不能生效。