博客剛開不久,訪問流量正在穩步上升,可是,從昨天開始,從搜索引擎帶來的流量驟降,讓我百思不得其解,使用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服務器 }