HTTPS

1.rewrite中的flagphp

跳轉(1)redirect---302----臨時跳轉----舊網站無影響,新網站無排名(瀏覽器不會記住新域名)html

        (2)permanet---301---永久跳轉----新跳轉網站有排名,舊網站排名清空(瀏覽器會記錄新域名)node

跳轉模塊:在server中執行nginx

        (1)rewrite ^/$ https://$http_host redirect/permanet;web

         (2)return 302/301 https://$http_host;後端

return:協議間的跳轉,不作任何修改瀏覽器

rewrite:地址作改寫安全

結束:(1)last  :本條規則匹配完成後,繼續向下匹配新的location URI規則session

        (2)break :本條規則匹配完成即終止,再也不匹配後面的任何規則架構

當rewrite規則遇到break後,本location{}與其餘location{}的全部rewrite/return規則都再也不執行。
當rewrite規則遇到last後,本location{}裏後續rewrite/return規則不執行,但重寫後的url再次從頭開始執行全部規則,哪一個匹配執行哪一個。

2.什麼是Https

hhtps:超文本傳輸協議,是以安全爲目標的http通道,簡單來講是http的安全版。
3.爲何要使用Https

由於http不安全,當咱們使用http網站時會遭到劫持和篡改,若是採用HTTPS協議那麼數據在傳輸過程當中是加密的,因此黑客沒法竊取或者篡改數據報文信息,同時也避免網站傳輸時信息泄露。 

4.模擬不使用Https的劫持和篡改?

篡改的模塊:在location中執行

sub_filter '被替換的內容‘' '替換的內容‘’
5.Https通信是如何肯定雙方的身份?

經過權機構來驗證雙方身份---CA,簡單的說,咱們須要實現http協議,須要上CA機構申請證書


6.Https證書類型、購買指南、注意事項?

(1)證書類型

ssl證書主要分爲2大類:
第一類按照驗證方式分:DV SSL證書 、OV SSL證書、 EV SSL證書
第二類按照域名數量來分:單域名SSL證書、多域名SSL證書、通配符證書

(2)購買指南

護1個域名 www docs.oldxu.com
保護5個域名 www images cdn test m docs.oldxu.com www.oldxu.com iamges.oldxu.com
通配符域名 *.oldboy.com
1套證書
保護全部的域名

(3)注意事項

  Https不支持續費,證書到期需從新申請新並進行替換。
  Https不支持三級域名解析,如 test.m.oldboy.com。
  Https顯示綠色,說明整個網站的url都是https的,而且都是安全的。
  Https顯示黃色,說明網站代碼中有部分URL地址是http不安全協議的。
  Https顯示紅色,要麼證書是假的,要麼證書已通過期。


7.如何實現單臺Https、又如何實現集羣Https?

(1)環境準備:

nginx必有ssl模塊  nginx-V(查看)   --with_http_ssl_module

建立存放ssl證書的路徑
[root@Nginx ~]# mkdir -p /etc/nginx/ssl_key
[root@Nginx ~]# cd /etc/nginx/ssl_key

(2)生成證書 (密碼1234)

[root@Nginx ~]# openssl genrsa -idea -out server.key 2048

(3)生成自簽證書,同時去掉私鑰的密碼
openssl req -days 36500 -x509 \
-sha256 -nodes -newkey rsa:2048 -keyout server.key -out server.crt

(4)配置nginx

[root@web01 conf.d]# cat s.oldux.com.conf
server {
listen 443 ssl;
server_name s.oldxu.com;
root /code;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;

location / {
index index.html;
}
}
server {
listen 80;
server_name s.oldxu.com;
return 302 https://$http_host$request_uri;
}

 


8.如何將Https集成集羣架構實現全站Https?

(1)先配置好後端的web節點
(2)在負載均衡上申請證書(若是以前申請過也能夠推送) <----
(3)配置nginx負載均衡--->http協議
(4).配置域名劫持
(5).配置nginx負載均衡--->轉爲https協議

[root@lb01 conf.d]# cat proxy_s.oldxu.com.conf
upstream webs {
server 172.16.1.7:80;
server 172.16.1.8:80;
}

server {
listen 443 ssl;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;

server_name s.oldxu.com;
location / {
proxy_pass http://webs;
include proxy_params;
}
}

server {
listen 80;
server_name s.oldxu.com;
return 302 https://$http_host$request_uri;
}


------------------------------------------------
[root@lb01 conf.d]# cat proxy_blog.oldxu.com.conf
upstream blog {
server 172.16.1.7:80;
server 172.16.1.8:80;
}

server {
listen 443 ssl;
server_name blog.oldxu.com;

ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;

location / {
proxy_pass http://blog;
proxy_next_upstream error timeout http_500 http_502 http_503;
include proxy_params;
}
}

server {
listen 80;
server_name blog.oldxu.com;
return 302 https://$http_host$request_uri;
}
--------------------------------------------------------------------------------
[root@web02 conf.d]# cat blog.oldxu.com.conf
server {
listen 80;
server_name blog.oldxu.com;
root /code/wordpress;

client_max_body_size 100m;
location / {
index index.php;
}

location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS on;
include fastcgi_params;
}
}

 


9.有一個url地址不但願走https,其餘正常走https?

需求: 部分URL走https,部分不走https?
s.oldxu.com/login ---> https

[root@lb01 conf.d]# cat proxy_s.oldxu.com.conf
upstream webs {
server 172.16.1.7:80;
server 172.16.1.8:80;
}

server {
listen 443 ssl;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;

server_name s.oldxu.com;
location / {
proxy_pass http://webs;
include proxy_params;
}
}
server {
listen 80;
server_name s.oldxu.com;

if ($request_uri ~* "^/login") {
return 302 https://$http_host$request_uri;
}

location / {
proxy_pass http://webs;
include proxy_params;
}
}
10.需求: 當用戶請求s.oldxu.com/abc時走http,其餘的全部都走https?
s.oldxu.com/ ---> https
s.oldxu.com/abc ---> http

[root@lb01 conf.d]# cat proxy_s.oldxu.com.conf
upstream webs {
server 172.16.1.7:80;
server 172.16.1.8:80;
}

server {
listen 443 ssl;
ssl_certificate ssl_key/server.crt;
ssl_certificate_key ssl_key/server.key;

server_name s.oldxu.com;
location / {
proxy_pass http://webs;
include proxy_params;
}
}
server {
listen 80;
server_name s.oldxu.com;

if ($request_uri !~* "^/abc") {
return 302 https://$http_host$request_uri;
}

location / {
proxy_pass http://webs;
include proxy_params;
}
}

11.https優化相關的參數?
server {
listen 443 ssl;
server_name nginx.bjstack.com;

ssl_certificate ssl_key/1524377920931.pem;
ssl_certificate_key ssl_key/1524377920931.key;
ssl_session_cache shared:SSL:10m;      #在創建完ssl握手後若是斷開鏈接,在session_timeout時間內再次鏈接,是不須要在次創建握手,能夠複用以前的鏈接
ssl_session_timeout 1440m;           #ssl鏈接斷開後的超時時間
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;      #使用的TLS版本協議
ssl_prefer_server_ciphers on;        #Nginx決定使用哪些協議與瀏覽器進行通信
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;        #配置加密套間

l ocation / { root /soft/code; index index.html index.htm; }}server { listen 80; server_name nginx.bjstack.com; return 302 https://$server_name$request_uri;}

相關文章
相關標籤/搜索