Nginx動靜分離
動靜分離
-
通過中間件將動態請求和靜態請求分離,從而分離資源,減少不必要的請求消耗,減少請求延時
-
動靜分離的情況下,動態請求掛掉的情況下,也能請求到靜態請求
test.conf的配置屬性
upstream java_api{ server 127.0.0.1:8080; } server { listen 80; server_name localhost; #charset koi8-r; access_log /var/log/nginx/log/host.access.log main; root /opt/app/code; location ~ \.jsp$ { #所有jsp的請求 proxy_pass http://java_api; index index.html index.htm; } location ~ \.(jpg|png|gif)$ { expires 1h; gzip on; } location /{ index index.html index.htm; } ...... }
Nginx的rewrite規則
-
URL訪問跳轉,支持開發設計
如:頁面跳轉,兼容性支持,展示效果等
-
SEO優化
-
維護 rewrite ^(.*)$ /pages/weihu.html break;所有請求都跳轉到維護界面
如:後臺維護,流量轉發等
-
安全 實現僞靜態
正則表達式
. | 匹配除換行符以外的任意字串 |
---|---|
? | 重複0次或1次 |
+ | 重複1次或更多次 |
* | 最少鏈接數,哪個機器鏈接數少就發哪 |
\d | 匹配數字 |
^ | 匹配字符串的開始 |
$ | 匹配字符串的結束 |
[a-z] | 匹配a-z小寫字母的任意一個 |
{n},{n,} | 重複n次,重複n次或更多次 |
\ | 轉義字符 |
測試正則表達式:pcretest
rewrite.conf配置
配置語法中的flag字段類型:
last | 停止rewrite檢測 |
---|---|
break | 停止rewrite檢測 |
redirect | 返回302臨時重定向,地址欄會顯示跳轉後的地址 |
permanent | 返回301永久重定向,地址欄會顯示跳轉後的地址 |
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/log/host.access.log main;
root /opt/app/code;
location ~ ^/break {
rewrite ^/break /test/ break;//不會繼續往下請求,返回404
}
location ~ ^/last {
rewrite ^/last /test/ last; //會重新請求test,返回success
}
location ~ ^/last {
rewrite ^/last /test/ last;
#rewrite ^/last /test/ redirect;
}
location ~ ^/baidu {
rewrite ^/baidu http://www.baidu.com/ permanent; #永久重定向:Nginx停止也會重定向網址
#rewrite ^/baidu http://www.baidu.com/ redirect;
}
location /test/ {
default_type application/json;
return 200 '{"status":"success"}';
}
}
- Rewrite規則優先級
- 執行server塊的rewrite指令
- 執行location匹配
- 執行選定的location中的rewrite
- 優雅的Rewrite規則書寫
server{
listen 80;
server_name nginx.org;
rewrite ^ http://www.nginx.org$request_uri?;
}