記錄nginx兩種問題解決
1: recv錯誤
[php]
recv() failed (104: Connection reset by peer) while reading client request line
發生這種問題,主要是因為網絡問題,在遷移aizher.com 服務器過程中,碰到這樣的問題,情況比較特殊,也是網絡問題,但是不是網上描述本地網絡端口沖突的問題。
出現這種問題原因是,西部數據的服務器上需要配置白名單,才能訪問服務器,我之前只是做了DNS解析到西部數據的服務器上,
第一次客戶端能夠請到服務器上,但是,西部數據會馬上把請求連接給重置,導致nginx提示連接充值,出現上述錯誤。
解決方案也很簡單,直接在西部數據的服務器上添加白名單即可。(一開始知道白名單的事情,好長時間沒搞,給忘記了)
2:js,圖片被php執行。
在在遷移aizher.com 服務器過程中碰到的另外一個問題是,js,css,和圖片被php執行(當然這是後來知道),一開始的時候,整個服務器的頁面
都花掉了,頁面樣式全亂。並且是有些圖片可以正常加載,而有的不能,png和jpg的都不能加載。當時因為是php配置問題,找了N久,沒有找到原因。
後來
[php]
error_reporting = E_ALL & ~E_NOTICE
打開php的notice提示,發現,請求png圖片時,報出php語法錯誤來,奇哉怪也,突然想到是nginx配置問題,所有的請求,都按php解析做的,原來的nginx配置是
[php]
server_name *.aizher.com;
index index.html index.htm index.php;
root /home/admin/web/;
location \$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /home/admin/web/$fastcgi_script_name;
}
找到原因後,調整如下
[php]
server_name *.aizher.com;
index index.html index.htm index.php;
root /home/admin/web/;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}
location ~ .*\.(php|php5)?$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /home/admin/web/$fastcgi_script_name;
}
location /status {
stub_status on;
access_log off;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
也許你會問,為什麼不把之前的nginx拷貝過來直接使用。原因是,
1:這台服務器上還有其他服務,nginx文件不能直接覆蓋,之前是使用的lnmp,這個這台服務器,都是從頭搭建,也沒有使用fpm,所以...。
2:大意失荊州,太小看這個問題,以為很容易就能搞定。