Nginx是一款輕量級的http服務器,採用事件驅動的異步非阻塞處理方式,具備較好的IO性能,時經常使用於服務端的反向代理和負載失衡javascript
gzip on; # 開啓gzip壓縮 默認僅支持html文件
gzip_http_version 1.1; # 壓縮版本
gzip_min_length 1k; # 啓用gzip壓縮的最小文件,小於設置值的文件將不會壓縮
gzip_comp_level 2; # 壓縮級別,1-9,數字越大壓縮的越好,也越佔用CPU時間
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png; # 進行壓縮的文件類型
gzip_disable "MSIE [1-6]\."; # 禁用IE 6 gzip
複製代碼
能夠在請求頭中的Accept-Encoding來查看是都開啓gzip壓縮。php
用於實現根據用戶的瀏覽環境自動切換站點。Nginx能夠經過內置變量$http_user_agent識別出用戶是pc端仍是移動端,進而控制重定向到H5站仍是PC站。 配置以下:css
location / {
if ($http_user_agent ~* '(Android|webOS|iPhone|iPod)') {
set $mobile_request '1';
}
if ($mobile_request = '1') {
rewrite ^.+ http://mysite-base-H5.com; # 重定向
}
}
複製代碼
在server1.com向server2.com發起請求時,能夠配置代理,或者經過設置請求頭解決跨域.配置以下:html
server {
listen 80; # 監聽端口
server_name http://server1.com; ## 當前服務器名稱
location / {
proxy_pass http://server2.com; # 進行服務器代理,也可依次實現跨域
add_header Access-Control-Allow-Origin *; # 設置請求頭實現跨域
}
}
複製代碼
nginx負載均衡策略:前端
upstream balanceServer {
server 10.1.22.33:12345;
server 10.1.22.34:12345;
}
複製代碼
upstream balanceServer {
ip_hash;
server 10.1.22.33:12345;
server 10.1.22.34:12345;
}
複製代碼
upstream balanceServer {
server 10.1.22.33:12345 weight=2;
server 10.1.22.34:12345 weight=1;
}
複製代碼
upstream balanceServer {
least_conn;
server 10.1.22.33:12345;
server 10.1.22.34:12345;
}
複製代碼
校驗refer實現,配置以下:java
location ~ .\.(jpg|png)$ {
valid_referers none blocked http://39.107.64.34; # 默認協議和指定域名能夠打開
if ($invalid_referer) { # 無權限訪問時 返回403
return 403;
#rewrite ^/ http://XXXX/403.gif; # 這個圖片不能被防盜鏈,否則顯示不正常。除非把上面的GIF過濾刪除。
}
}
複製代碼
對於源爲none(源爲空 )、blocked(不爲空,可是裏面的值被代理或者防火牆刪除)、指定源如http://39.107.64.34,則內置變量$invalid_referer爲0,能夠訪問該站點圖片.不然爲1,不能訪問,進行查看403頁面 提示: 若是用戶直接在瀏覽器輸入你的圖片地址,那麼圖片顯示正常,由於它符合none這個規則nginx
參考文獻:web