在本地搭建了test/laravel,Nginx的虛擬主機我指定到test/資料夾下,結果 test.app/laravel/public/ 出來了,可是 test.app/laravel/public/home 的時候發現 file not found. 因為test/目錄下有好多其他程式碼,不想每一個配置一個虛擬主機,剛開始搜尋了好些程式碼,怎麼配置就是不對,查詢日誌全是404:
2017/04/28 14:35:56 [error] 16935#0: *167 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: test.app, request: "GET /laravel/public/home HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "test.app"
或者 /laravel/public/home 目錄不存在等等,各種搞各種除錯就是那麼的蛋疼。。。。。
剛開始看到http://www.cnblogs.com/lidabo/p/4169396.html 文章(我們看不懂官方的英文文件),就急吼吼的找下面的配置內容,沒看上面的解說,最終還是蛋疼疼。。。。。
後來。。。。。實在憋得難受就從開頭看。。。。中間迷糊睡著了。。。。,娘希匹,為什麼非要在 ~ .php$ 前面過濾,原來是。。。。有點小白。。。。
普通location和正則location匹配順序 的問題 反正不是一般理解的優先順序處理。。。。。貼程式碼吧。。。。。
server {
listen 80;
server_name test.app;
root /Sites/test;
index index.php index.html index.htm;
location / {
autoindex on;
try_files $uri $uri/ /index.php?$args;
}
#proxy the php scripts to php-fpm
location ~ \.php$ {
#deny all;
#return 406;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#fastcgi_split_path_info ^(.+\.php)(/.+)$;
#fastcgi_param PATH_INFO $fastcgi_path_info;
#fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
include /usr/local/etc/nginx/fastcgi.conf;
}
location ~ /laravel/public/.+$ {
try_files $uri $uri/ /laravel/public/index.php?$args;
#deny all;
#return 405;
}
location ~ /\.ht {
deny all;
}
}