nginx
wordpress在nginx中的rewrite重寫規則
[
|
2012/05/27 12:02]


對于wordpress開啟靜態化url時如何在nginx下配置重寫rewrite規則,網上一大抄的一個方式是說這樣配置:
if (!-e $request_filename)
{
rewrite ^(.+)$ /index.php?q=$1 last;
}
看起來沒什么錯誤,但實際使用中總發現靜態文件也被rewrite走了,去nginx官網發現有了新參數:
在location /段里加上一句:try_files $uri $uri/ /index.php?q=$uri&$args;
ok了,輕松愉快。
if (!-e $request_filename)
{
rewrite ^(.+)$ /index.php?q=$1 last;
}
看起來沒什么錯誤,但實際使用中總發現靜態文件也被rewrite走了,去nginx官網發現有了新參數:
在location /段里加上一句:try_files $uri $uri/ /index.php?q=$uri&$args;
ok了,輕松愉快。
為博客nginx日志添加請求域名打印(host字段)及添加其他域跳轉到主域
[
|
2012/05/17 17:40]


前幾天百度快照和流量都恢復了,心情很好,但今天看收錄時突然發現遷移前服務器綁定的那個臨時域名居然也在收錄之列,這個不是一個好的現象,因為如果爬蟲同時對兩個域名同時抓取,會得到相同的內容,對于重復內容是很不利于收錄的。查了下快照,發現百度依舊動作很慢,收錄只有一頁,還是遷移前的那個測試頁,google則全都收錄了,怪不得遷移時google非常活躍,現在回想應該不是爬主域名,很可能是發現那個臨時域名指向的站點大更新,在爬那個。
糾結的是nginx默認配置居然不打印請求的host域名,無法考證之前爬蟲爬取情況,亡羊補牢,幸虧nginx默認留空了日志第二個字段,打印的是“-”,正好用來打印域名,將-修改為$host,重啟后就打印了。
對于已經收錄的臨時域名,需要將流量都導入到主域,在nginx里配置了一下301跳轉:
if ($host = 'tmpdomain.com' )
{
rewrite ^/(.*)$ http://maindomain.com/$1 permanent;
}
ok
糾結的是nginx默認配置居然不打印請求的host域名,無法考證之前爬蟲爬取情況,亡羊補牢,幸虧nginx默認留空了日志第二個字段,打印的是“-”,正好用來打印域名,將-修改為$host,重啟后就打印了。
對于已經收錄的臨時域名,需要將流量都導入到主域,在nginx里配置了一下301跳轉:
if ($host = 'tmpdomain.com' )
{
rewrite ^/(.*)$ http://maindomain.com/$1 permanent;
}
ok
nginx為js/css開啟gzip壓縮節省流量
[
|
2012/05/07 14:26]


今天發現一個問題,發現博客的js和css都沒有gzip壓縮,大號js動輒就20幾k,很奇怪,以為是遷移導致的某個地方忘了開,查了下,發現之前的也沒開,疑惑。
我明明在ngix配置文件里加了gzip on;了,但為啥js和css沒有開呢,查了下nginx文檔,原來默認只對text/html類型的壓縮。
加了一句:gzip_types application/x-javascript text/css
ok,現在js和css都壓縮了,加載速度又提高了不少。
我明明在ngix配置文件里加了gzip on;了,但為啥js和css沒有開呢,查了下nginx文檔,原來默認只對text/html類型的壓縮。
加了一句:gzip_types application/x-javascript text/css
ok,現在js和css都壓縮了,加載速度又提高了不少。
nginx強制使用https(http到https自動跳轉
[
|
2012/03/11 10:45]


nginx對于使用http訪問開啟了https的站點會返回400.而瀏覽器輸入網址默認是http的,每次都要去改成https很煩,于是考慮自動跳轉的方法,剛開始用的$scheme變量判斷,如果不是https則跳轉。發現無效。
搜了一下,網上的一大抄們都表示rewrite (.*)https://$host/$1 permanent;可以,光目標地址沒考慮端口號就讓人感覺不是特別靠譜。試了下,果然不行。
想了下,應該是在一開始就被判斷出異常,根本沒有往后走的緣故。
這時找到一個方法:error_page 497 https://$host:$server_port$request_uri;
497表示使用http連接https的錯誤碼。一旦出錯讓其跳轉到https。
搞定
搜了一下,網上的一大抄們都表示rewrite (.*)https://$host/$1 permanent;可以,光目標地址沒考慮端口號就讓人感覺不是特別靠譜。試了下,果然不行。
想了下,應該是在一開始就被判斷出異常,根本沒有往后走的緣故。
這時找到一個方法:error_page 497 https://$host:$server_port$request_uri;
497表示使用http連接https的錯誤碼。一旦出錯讓其跳轉到https。
搞定