laravel nginx不同的根源到不同的项目

时间:2017-10-31 11:35:59

标签: php nginx laravel-5

我有全球项目(web wrapp)和多个项目。文件结构

project/
  application/
  index.php
    project1/
    project2(on laravel)/
      public/
        index.php

所以,如果我调用project,我会得到index.php。 我想用url / project2运行project2 / public / index.php。 nginx conf下面:

server {
  listen 80 default_server;
  listen [::]:80 default_server;

  root /home/user/projects/project/application;
  index index.php index.html index.htm;

  location /project2/ {
    root /home/user/projects/project/application/project2/public/;
    try_files $uri $uri/ /index.php$is_args$args;
  }

  location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.1-fpm.sock;
    fastcgi_read_timeout 600;
  }
}

使用这种配置,当询问/ project2时,我得到nginx的404。如果我重新播放

location /project2/ {
  root /home/user/projects/project/application/project2/public/;
  try_files $uri $uri/ /index.php$is_args$args;
}

location /project2/ {
  root /home/user/projects/project/application/project2/public;
  try_files $uri $uri/ /project2/public/index.php$is_args$args;
}

我从Laravel找不到。有可能解决我的问题吗?

2 个答案:

答案 0 :(得分:0)

您不需要在project2 root中设置location

试试这个:

  server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /home/user/projects/project/application;
    index index.php index.html index.htm;

    location ~ /project2 {
      try_files /project2/public/$uri /project2/public/$uri/ /project2/public/index.php?q=$uri&$args;
    }

    location ~ \.php$ {
      include snippets/fastcgi-php.conf;
      fastcgi_pass unix:/run/php/php7.1-fpm.sock;
      fastcgi_read_timeout 600;
    }
  }

答案 1 :(得分:0)

我想,在这一点上问题是在laravel。我将所有路线都放在Route::prefix('project2', function(){ ... });中并且有效。我用了

 location /project2/ {
  root /home/user/projects/project/application/project2/public;
  try_files $uri $uri/ /project2/public/index.php$is_args$args;
}