与Laravel 5.4.24和Nginx 1.12有关的404问题

时间:2017-06-09 13:09:06

标签: php windows laravel nginx laragon

我在Windows 8上设置一个新的本地主机时遇到了障碍。设置完成了laragon(3.0.5)并包含:

  • php 7.1.5
  • laravel 5.4.24
  • nginx 1.12.0

nginx的配置文件是

server {
    listen 8080;
    server_name new_project.dev *.new_project.dev;
    root "C:/lar/laragon/www/new_project/dir1/";

    index index.html index.htm index.php;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass php_upstream;      
        #fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }


    charset utf-8;

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
    location ~ /\.ht {
        deny all;
    }
}

在routes / web.php中我添加了以下路由

Route::get('/foo', function () {
    return 'Everything is awesome!';
});

我希望在去see this documentation.看到字符串“Everything is awesome!”时,我会从nginx获得404.

绝对不会有任何帮助。

----更新1 ----

再次在routes / web.php中有以下路由

Route::get('/', function () {
    return 'You are on the home page.';
});

当我去http://new_project.dev:8080/dir1/public/foo时,我得到一个200和预期的字符串。

3 个答案:

答案 0 :(得分:2)

你正在使用拉拉贡的力量,但你用错误的设置和错误的网址销毁了它。

您的设置必须如下:(请注意公开/

 root "C:/lar/laragon/www/new_project/dir1/public/";

现在,你的生活更轻松 - 这个网址应该有效:

http://new_project.dev:8080/foo

答案 1 :(得分:0)

new_project / dir1 /是root指令的一部分,它不能处于请求状态,因为所有文件和脚本搜索都是相对于它进行的。正确的请求是http://new_project.dev:8080/public/foo

答案 2 :(得分:0)

根据您当前的配置,我认为这可以使用。我更新了try_files index.php位置

server {
    listen 8080;
    server_name new_project.dev *.new_project.dev;
    root "C:/lar/laragon/www/new_project/dir1/";

    index index.html index.htm index.php;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass php_upstream;      
        #fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }


    charset utf-8;

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
    location ~ /\.ht {
        deny all;
    }
}

虽然我不确定您的配置,但我建议您将项目根目录设置为公共文件夹,而不是必须执行/ public。然后,您将从上面离开try_files。

Laravel Homestead也是建立开发环境的绝佳选择:https://laravel.com/docs/5.4/homestead