1. 程式人生 > 其它 >立Flag 學習Ng - 快取及壓縮&動靜分離&https

立Flag 學習Ng - 快取及壓縮&動靜分離&https

技術標籤:分散式#nginxnginx

立Flag 學習Ng - 快取及壓縮&動靜分離&https

  • 動靜分離
  • 快取配置及Gzip配置
  • https配置

快取及壓縮

location ^~ /qq.png {
    #	expires 2s;#快取2秒
    expires 2m;#快取2分鐘
    #	expires 2h;#快取2小時
    #	expires 2d;#快取2天
	root html/gzip;
}
location ^~ /chrome.png {
	#快取2分鐘
    expires 2m;
    root html/gzip;
}
 # 這裡要注意看瀏覽器支援什麼壓縮格式
location ~ /(.*)\.(html|js|css|jpg|jpeg|png|gif)$ {
	# 啟用gzip壓縮,預設是off,不啟用
    gzip on; 

    # 對js、css、jpg、png、gif格式的檔案啟用gzip壓縮功能
    gzip_types application/javascript text/css image/jpeg image/png image/gif;
    gzip_min_length 1024; # 所壓縮檔案的最小值,小於這個的不會壓縮
    gzip_buffers 4 1k; # 設定壓縮響應的緩衝塊的大小和個數,預設是記憶體一個頁的大小
    gzip_comp_level 1; # 壓縮水平,預設1。取值範圍1-9,取值越大壓縮比率越大,但越耗cpu時間

    root html/gzip;
}

動靜分離

https://www.cnblogs.com/gongjingyun123–/p/11424805.html

https://blog.51cto.com/wgkgood/1094236

https://blog.51cto.com/4402071/2087071

https://www.cnblogs.com/wajika/p/6575656.html

一句話就是節省伺服器資源

  • 靜態檔案是不變的,因此不需要重複的從應用伺服器中不斷的抽取。
  • 動靜分離後靜態資源不在需要從伺服器中獲取就節省了伺服器的頻寬
  • 靜態資源響應也就更快一些

ng實現動靜分離的原理是啥?

帶正則匹配的location來指定匹配項來區分動態和靜態的檔案來進行處理的。

單臺伺服器實現動靜分離

# 從 ng 中獲取
location / {
    root /app/ng/staticRout/;
    index.php;
}
location ~* \.(png|jpg|mp4)${
     #指定圖片路徑
    root /app/ng/staticRout/images;
    #壓縮
    gzip on;
    .....
}

# 指向其他伺服器
location ~ \.php$ {
    staticRout_pass 127.0.0.1:8900;
    .....
}

多臺伺服器實現動靜分離

# 靜態資源
upstream static {
    server 127.0.0.1:800;
}

# 動態資源
upstream dynamic {
    server 127.0.0.1:801;
}

server {
        listen 80;
        server_name jimmy.com;

        location ~* \.(jpg|png|gif)$ {
                proxy_pass http://static;
                proxy_set_header Host $http_host;
        }

        location ~ \.jsp {
                proxy_pass http://dynamic;
                proxy_set_header Host $http_host;
        }
}

https配置

https互動過程

瀏覽器使用公鑰,把資料加密後,再發送出去。經過公鑰加密內容,只有有私鑰才能解密讀取

nginx配置https的時候,需要兩個東西:(此兩樣需購買)

  • key,私鑰。放在nginx伺服器裡面,僅此一份

  • 證書,公鑰,供瀏覽器去下載

配置參考官網:

http://nginx.org/en/docs/http/configuring_https_servers.html

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     www.example.com.crt;
    ssl_certificate_key www.example.com.key;
    ...
}

openssl安裝(略)

自己生成公鑰私鑰測試(僅能測試,不能用於生產)

# 建立伺服器私鑰 執行後輸入密碼(自己設定)
> openssl genrsa -des3 -out server.key 1024
# 建立簽名請求證書(CSR)
> openssl req -new -key server.key -out server.csr
# 載入ssl支援ng並去除私鑰密碼
openssl rsa -in server.key -out server_nopass.key
# 最後標記證書使用啥該的 私鑰和csr
openssl x509 -req -days 365 -in server.csr -signkey server_nopass.key -out server.csr