Nginx laravel配置

时间:2017-03-05 23:41:42

标签: linux laravel nginx

我目前正在开发一个laravel应用程序,在nginx webserver上,我总是通过编辑/ etc / hosts访问我的项目,并为项目名称添加一个条目,然后在默认文件中添加一个带有服务器名称的服务器块nginx,所以如果我有一个名为“Missouri”的项目,我会这样称呼:

  

http://missouri/

我现在想改变一下,并使用我的IP地址或我的localhost在项目名称之前,如下所示:

  

http://localhost/missouri/

我搜索了很多,找到了很多不同的组合,但没有一个是高效的,这是一般服务器配置的配置块:

server {
    listen 80 default_server;

    root /var/www/html;
    index index.php index.html index.htm;

    server_name localhost;

    location / {
            try_files $uri $uri/ /index.php?$query_string;
    }
    location ~ \.php$ {
            try_files $uri /index.php =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
    }

    location ^~  /Missouri {
    alias /var/www/html/Missouri/public;

    try_files $uri $uri/ /Missouri/index.php?$query_string;

         location ~ \.php$ {
            try_files $uri /index.php =404;
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
         }

    }
}

如果我使用以前的配置并调用localhost / Missouri,我会找不到文件。白页错误,但是如果我使用以下代码并调用Missouri /它可以工作:

server {
listen 80;

server_name missouri;

root /var/www/html/Missouri/public;
index index.php index.html;

location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

感谢您的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

我不是DevOps,但我认为您可以在nginx服务器块中编写正则表达式,因此“localhost / foo”将是“localhost / foo / public”的别名。通过这样做,您不需要为每个网站添加块。

另一方面,关于你的问题,我建议你使用“root”而不是“别名”。这是一个示例代码:

location /Missouri {
       root /var/www/html/Missouri/public;

       index index.php index.html;

       location / {
           try_files $uri $uri/ /index.php$is_args$args;
       }

       location ~ \.php$ {
               try_files $uri =404;
               fastcgi_split_path_info ^(.+\.php)(/.+)$;
               fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
               fastcgi_index index.php;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               include fastcgi_params;
       }
}

我希望它有效。