【问题标题】:Laravel / Nginx: 403 forbidden on middleware routesLaravel / Nginx:中间件路由上禁止 403
【发布时间】:2020-03-12 12:49:27
【问题描述】:

我遇到了一个非常令人沮丧的错误。我正在尝试将我的本地环境移动到服务器。它在我的本地主机上运行良好,但在所有需要登录的路由上都出现 403 禁止错误。我可以访问 /login 并登录,但访问中间件路由会吐出 403。

旁注:我使用的本地数据库与在生产环境中使用的数据库相同(直接 IP 地址而不是本地主机)。该数据库与生产环境托管在同一台服务器上。

迁移到生产环境的步骤:

  • git 克隆仓库
  • 调整 .env 文件以反映生产环境(调试错误,环境生产)
  • 作曲家安装
  • php artisan storage:link(图片需要)
  • 在域中设置 nginx

以下是一些相关文件:

路由/web.php:

Auth::routes(['register' => false]);

Route::prefix('cms')->middleware('auth')->group(function() {
    Route::get('/', 'Cms\CmsController@index')->name('cms.index');

    Route::post('/upload', 'Cms\PhotoController@storeMedia')->name('photo.storeMedia');

    Route::resource('projects', 'Cms\ProjectController', ['except' => ['store', 'show']]);
    Route::resource('customers', 'Cms\CustomerController', ['except' => ['store']]);
    Route::resource('users', 'Cms\UserController', ['except' => ['store', 'show']]);
});

Route::get('/over-ons', 'Site\SiteController@about')->name('site.about');
Route::get('/portfolio/{id}/{slug}', 'Site\SiteController@project')->name('site.project');
Route::get('/portfolio', 'Site\SiteController@projects')->name('site.projects');
Route::get('/diensten', 'Site\SiteController@services')->name('site.services');
Route::get('/klanten', 'Site\SiteController@customers')->name('site.customers');
Route::get('/contact', 'Site\SiteController@contact')->name('site.contact');
Route::get('/', 'Site\SiteController@index')->name('site.index');

Nginx 子块:

server {
    listen 80;
    root /sites/mediafox/public;
    index index.php index.html index.htm index.nginx-debian.html;

    server_name [removed for privacy];

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    #   fastcgi_pass 127.0.0.1:9000;
    }

    location ~ /\.ht {
        deny all;
    }
}

ls -l on root(权限):

drwxrwxr-x  2 niels    niels      4096 Nov 16 16:44 _dev
drwxrwxr-x  6 niels    niels      4096 Nov 16 16:44 app
-rw-rw-r--  1 niels    niels      1686 Nov 16 16:44 artisan
drwxrwxr-x  3 niels    niels      4096 Nov 16 16:44 bootstrap
-rw-rw-r--  1 niels    niels      1716 Nov 16 16:44 composer.json
-rw-rw-r--  1 niels    niels    208784 Nov 16 16:44 composer.lock
drwxrwxr-x  2 niels    niels      4096 Nov 16 16:44 config
drwxrwxr-x  5 niels    niels      4096 Nov 16 16:44 database
-rw-rw-r--  1 niels    niels    432338 Nov 16 16:44 package-lock.json
-rw-rw-r--  1 niels    niels      1307 Nov 16 16:44 package.json
-rw-rw-r--  1 niels    niels      1297 Nov 16 16:44 phpunit.xml
drwxrwxr-x  6 niels    niels      4096 Nov 16 17:01 public
drwxrwxr-x  6 niels    niels      4096 Nov 16 16:44 resources
drwxrwxr-x  2 niels    niels      4096 Nov 16 16:44 routes
-rw-rw-r--  1 niels    niels       563 Nov 16 16:44 server.php
drwxrwxr-x  6 www-data www-data   4096 Nov 16 16:44 storage
drwxrwxr-x  4 niels    niels      4096 Nov 16 16:44 tests
drwxrwxr-x 49 niels    niels      4096 Nov 16 16:46 vendor
-rw-rw-r--  1 niels    niels       724 Nov 16 16:44 webpack.mix.js

因此得出结论:我不需要登录的路线运行良好。当我尝试访问需要中间件 'auth' 的 url 时出现问题。

任何帮助将不胜感激。

-- 更新 1--

好像和Nginx有关。我的 Nginx 日志中有这个:

2019/11/17 14:40:09 [error] 1525#1525: *335 directory index of "/sites/mediafox/public/cms/" is forbidden, client: [ip removed], server: www.mediafox.*****.nl, request: "GET /cms/ HTTP/1.1", host: "mediafox.******.nl"

【问题讨论】:

  • 您的会话驱动程序是什么?尝试将其设置为“数据库”。就像你所说的那样,会话驱动程序设置为“文件”并且无法写入该文件。
  • 如果你将auth 中间件添加到你的site.contact 路由中,你是否也会得到403?
  • @PavelLint 它在“文件”上,但这与我的本地环境没有什么不同。我试过数据库,这给了我一个 500 服务器错误。
  • @lagbox 试过了。工作正常。在访问该路线之前,我也尝试过 /logout 。我在该网址上看到“哎呀,出了点问题”窗口。
  • @nepp95 要使数据库会话正常工作,您需要运行php artisan session:table,然后运行php artisan migrate。那应该可以解决您的问题

标签: php laravel nginx


【解决方案1】:

问题在于我的公共根目录中有一个名为“cms”的文件夹。这仅包含我的资产(js/css),但与 Nginx 配置冲突。

解决方案 1(首选):将其重命名为不在我的路线中的名称。

解决方案 2:重命名我的路线

ls -l public/
total 48
drwxr-xr-x  14 niels  staff   448 Nov 18 10:59 .
drwxr-xr-x  29 niels  staff   928 Nov 16 13:51 ..
-rw-r--r--@  1 niels  staff  6148 Oct 31 15:19 .DS_Store
-rw-r--r--   1 niels  staff   593 Oct 31 09:59 .htaccess
drwxr-xr-x   4 niels  staff   128 Nov 11 21:45 cms
-rw-r--r--   1 niels  staff     0 Oct 31 09:59 favicon.ico
drwxr-xr-x  13 niels  staff   416 Nov 13 11:48 fonts
drwxr-xr-x   7 niels  staff   224 Nov 18 10:59 images
-rw-r--r--   1 niels  staff  1823 Oct 31 09:59 index.php
drwxr-xr-x   3 niels  staff    96 Oct 31 14:41 media
-rw-r--r--   1 niels  staff   225 Nov 18 11:50 mix-manifest.json
-rw-r--r--   1 niels  staff    24 Oct 31 09:59 robots.txt
drwxr-xr-x   4 niels  staff   128 Nov 11 21:45 site
lrwxr-xr-x   1 niels  staff    61 Nov 14 09:30 storage -> /Users/niels/Eppostudios/mediafox/mediafox/storage/app/public

【讨论】:

    猜你喜欢
    • 2014-08-26
    • 2019-01-23
    • 2017-07-15
    • 1970-01-01
    • 2019-06-07
    • 2019-04-17
    • 1970-01-01
    • 2021-07-24
    相关资源
    最近更新 更多