nginx+php+laravel配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33222871/article/details/81117582

如果laravel项目路径在/home/project/laravel目录下

则nginx配置如下


       location ~ \.php$ {
            root           /home/laravel/public/;
           


            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
             include        fastcgi_params;
        }
        location / {
			try_files $uri $uri/ /index.php?$query_string;

        }

这样配置之后,输入127.0.0.1/即可访问laravel项目,

但是这样不符合我的要求,,假如我在/home/laravel2/下面又建了一个laravel项目,那么我必须去修改nginx配置才能访问新项目,而且旧项目就不能访问了。

我想要的效果是类似如tomcat的webapps功能,只要我在这个路径下新建项目,那么我什么都不用做就可以访问。

首先要搞明白的是——nginx如何处理的php请求

其次——laravel是如何找到对应路由的。

  1. nginx代理php实际上也是一种反向代理,nginx将请求交给php-fpm;php-fpm处理了请求之后再交给nginx
  2. 与一般的nginx反代不同的是,php-fpm能够获取地址栏上的内容,而不是nginx反代之后的地址;因此laravel实际上也是根据地址栏上的uri来找对应的路由
  3. 查看php的报错信息发现,laravel实际上有几个比较重要的变量,分别是DOCUMENT_ROOT,DOCUMENT_URI,REQUEST_URI,SCRIPT_NAME;这类变量有很多,大概关注这几个就行了。(php可以通过$_SERVER['']来查看)
  4. DOCUMENT_ROOT是项目路径,一般指向public目录,DOCUMENT_URI不是很清楚,就laravel框架写成"/index.php";SCRIPT_NAME相同;最重要的是REQUEST_URI,这里就是地址栏上的uri,所以只要修改这里的值就可以实现功能了;
  5. REQUEST_URI是怎么来的呢?看nginx配置项有一个fastcgi_param,这个指令的作用是给php-fpm传递参数
  6. 我现在要用127.0.0.1/php/s/public/133访问/home/larvel/s/ 下的laravel项目的133路由,因此location匹配规则如下 /php/([^/]+)/public/(.+),第一个括号内的值代表larvavel所在目录,相当于webapps下的第一级目录名称,public为固定,也可以不要,第二个括号内为uri匹配,是我真正要交给laravel解析的uri,在此时应该就是133

故,完整配置如下

 location ~ /([^/]+)/(.+)/index.php$ {
            root           /home/larvels/$1/public/;
            include        fastcgi_params;
            fastcgi_param DOCUMENT_URI "/index.php";
            fastcgi_param REQUEST_URI /$2;
            fastcgi_param SCRIPT_NAME "/index.php";


            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root/index.php;
            
        }
        location ~ /php/([^/]+)/public/(.+) {
			try_files $uri $uri/ /$1/$2/index.php?$query_string;

        }

猜你喜欢

转载自blog.csdn.net/qq_33222871/article/details/81117582