laravel的nginx配置

这件事情本来不归我管。但服务器端告诉我,配置文件就在那里,你去改吧!
于是我就去看了看文件原本的样子:

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, 所以不得不改为手动验证的方式,见官方文档

推荐阅读更多精彩内容