这件事情本来不归我管。但服务器端告诉我,配置文件就在那里,你去改吧!
于是我就去看了看文件原本的样子:
server {
listen 80;
server_name xxx ;
root /var/market;
index index.html index.php;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
if (-d wp-admin){
break;
}
if (-f $request_filename/index.html){
rewrite (.*) $1/index.html break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
}
location ~ .*\.(php|php5)?$ {
try_files $uri =404;
fastcgi_pass unix:/tmp/php55-cgi.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fcgi.conf;
}
}
现在的问题是,我希望在已有nginx的root下,在其子文件夹中放laravel的文件夹。首先我要知道怎么进行转发。在stackoverflow找到一种方法,但是是针对laravel4的。我还是很忐忑。
接下来是看nginx配置location的方法。我希望匹配到子文件夹。
最终在配置文件中加入下面这条,搞定。
location /xxx/public{
rewrite ^/xxx/public/(.*)$ /xxx/public/index.php?_url=/$1;
}
最后发现另一个蛋疼的问题。在默认的nginx配置中加入laravel之后,需要处理下静态资源文件,让其可以被访问。于是再加入下面代码进行末尾匹配:
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
#
}
另外,在我配置了nginx后,通过ajax发送post的请求中,vilidate验证没有返回422, 所以不得不改为手动验证的方式,见官方文档。