1个带有2个TLD的Laravel安装

时间:2018-05-15 17:10:48

标签: laravel

我允许我的客户上传大文件。因为我使用Cloudflare,超过100 MB的任何东西都会被拒绝,这是不好的。

因此,我正在考虑将上传表单操作从mysite.com/upload切换为mysite.net/upload。这样我就可以使用不通过Cloudflare的域名,因此文件大小不会受到限制。

我已将mysite.net设置为Forge的网站,以便通过将nginx中的根位置设置为指向mysite.com的当前文件夹来镜像mysite.com。所以现在当有人前往mysite.net时,他们会看到mysite.com的内容。

不幸的是,mysite.net现在对DDOS攻击开放,因为它没有通过Cloudflare运行。

所以 只能从我的负载平衡服务器访问。

这是可能的,如果是这样的话:我该怎么做?

我一直在研究这个并且没有真正遇到适用于我的答案,最常见的情况是使用子域名,这在我的情况下不适用。

1 个答案:

答案 0 :(得分:1)

想出来;我决定使用子域,因为它更容易。

我进入Cloudflare,添加了子域名upload.example.com(当然,使用您的真实域名),因此流量可以点击它,然后关闭子域的保护,以便可以上传大文件。

我更新了我的.env文件并添加了SESSION_DOMAIN变量,以便用户的会话可以在example.comupload.example.com域中使用。

SESSION_DOMAIN=".example.com"

请注意,域以句点开头,值用引号括起来。如果您省略引号,您的用户将无法登录您的应用,如果您使用Envoyer,则在编辑.env文件时会忽略引号。

然后我在路由文件中添加了一个新组来处理子域的流量。我添加了将所有GET流量重定向回原始网站(https://example.com)的路由,并添加了POST路由来处理上传。

Route::group(['domain' => 'upload.example.com'], function () {
    Route::get('/', function () {
        return redirect(url('https://example.com'));
    });

    Route::post('upload', 'UploadController@store')->middleware('throttle:4,1');
});

然后以我的形式......

<form action="https://upload.example.com/upload" enctype="multipart/form-data">

最后,我清除了浏览器的缓存和cookie,然后登录到网站并上传了一个大文件! :)