博客剛開不久,訪問流量正在穩步上升,可是,從昨天開始,從搜索引擎帶來的流量驟降,讓我百思不得其解,使用google網站管理員工具診斷後發現,雖然網頁返回了正確的內容,但是HTTP中始終響應的 404 代碼,仔細分析後得出的結論是nginx的error_page配置出了問題!
由於小站用的是nginx+apache的構建方式,apache放在後端處理php文件,nginx處理html、圖片的靜態文件。簡單配置如下:
location / {
index index.php index.html;
error_page 404 @proxy;
}
location @proxy {
proxy_pass http://localhost:8080;
#8080端口放置apache服務器
}
....
#靜態文件的配置就省略了
思路很簡單,如果在定位符”/”下找不到文件將把文件代理給apache處理。這種處理方式,乍看下沒有問題,我在浏覽器下也能正常浏覽網頁,不過,nginx默認會給一個404代碼給浏覽器,這對蜘蛛的訪問是致命的。明白這點後處理就很簡單了。
將 error_page 404 @proxy; 改成 try_files $uri @proxy; 問題就解決了。
root /path/www/$host;
location / {
index index.php index.html;
proxy_pass http://localhost:8080;
}
location ~* \.(html|htm)$ {
try_file $uri @proxy;
}
location ~* \.(jpg|gif|png|zip|js|css)$ {
expires 30d;
gzip on;
gzip_min_length 1024;
gzip_types text/plain application/x-javascript text/css application/xml;
}
location @proxy {
proxy_pass http://localhost:8080;
#8080端口放置apache服務器
}