官方文檔:http://nginx.org/en/docs/
常用模塊:
內(nèi)置參數(shù)查詢:
系統(tǒng)的基礎(chǔ)使用教程就不再記錄了,只是記錄一些用到的配置方法
主域跳轉(zhuǎn)www域
官方推薦分兩個server,不推薦用匹配host然后轉(zhuǎn)發(fā)的方式
server {
listen 80;
#此處填寫主域
server_name qbsmovie.com;
return 301 http://www.$host$request_uri;
}
server {
listen 80;
#此處填寫WWW域
server_name www.qbsmovie.com;
//網(wǎng)站主配置
.....
}
多個條件的if判斷
nginx沒有and條件和else泡嘴,注意語法比較嚴格疾瓮,該有空格的地方必須要有空格
#特定頁面的主頁301跳轉(zhuǎn)
set $flag_jianzhan_root 0;
if ( $host = 'jianzhan.fxt.cn' ){
set $flag_jianzhan_root "${flag_jianzhan_root}1";
}
if ( $request_uri = '/' ){
set $flag_jianzhan_root "${flag_jianzhan_root}2";
}
if ( $flag_jianzhan_root = '012' ){
return 301 http://www.fxt.cn;
}
帶參數(shù)請求轉(zhuǎn)發(fā)
被轉(zhuǎn)發(fā)的服務(wù)器需要接收轉(zhuǎn)發(fā)前的參數(shù)
location /sitemap.xml {
rewrite /sitemap.xml /api/sitemap/pc?host=$host break;
proxy_pass http://www.newjianzhan.com;
}
location /sitemap.xml {
proxy_pass [http://www.newjianzhan.com;](http://www.newjianzhan.com%3B/)
#通過設(shè)置header來傳遞是更好的解決辦法
proxy_set_header Host $host;
}
**路由偽靜態(tài)rewrite**
rewrite "/mobile/p([0-9]{1,})/news_([0-9]{1,}).html1&NewsID=$2;
**指定404頁面**
error_page 404 /404.html;
···
gzip配置
https://nginx.org/en/docs/http/ngx_http_gzip_module.html
http://www.cnblogs.com/mitang/p/4477220.html
百度seo要求:修改vary的header值
#gzip_vary on; 這一行注釋掉或者改成off獲取不寫,換成下面那行岖瑰。這個配置項添加的vary頭不符合要求。
#add_header Vary "Accept-Encoding, User-Agent"; 這個header用于百度移動端抓取,配合meta標(biāo)簽applicable-device使用
參考文章:https://ziyuan.baidu.com/college/articleinfo?id=717
配置默認服務(wù)器
默認按照server的加載順序咒唆,第一個加載的為默認
手動指定的方法:
listen 80 default_server;
和server_name ;這個寫法沒有關(guān)系,'' 只是作為一個和業(yè)務(wù)域名無關(guān)的請求回收服務(wù)而已(通俗理解就是不限制傳入的域名或IP)释液,如果我們線上的業(yè)務(wù)都是明確的業(yè)務(wù)域名訪問全释,那泛解析造成的一些非業(yè)務(wù)域名或ip訪問都會被這個 sever 回收處理。
判斷文件是否存在
if ( -e /www/test.php ) {
...
}
正則替換
#host為www.test.com,$prefix可以賦值為test_com_
if ( $host ~ ^www\.(/w)\.(/w)$ ) {
$perfix = $1_$2_;
}
php fast_cgi傳參
location ~ \ .php$ {
...
fast_cgi_params DB_PREFIX $prefix;
...
}
此處的DB_PREFIX參數(shù)可以作為系統(tǒng)的env變量使用误债。