我允许我的客户上传大文件。因为我使用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运行。
所以 只能从我的负载平衡服务器访问。
这是可能的,如果是这样的话:我该怎么做?
我一直在研究这个并且没有真正遇到适用于我的答案,最常见的情况是使用子域名,这在我的情况下不适用。
答案 0 :(得分:1)
想出来;我决定使用子域,因为它更容易。
我进入Cloudflare,添加了子域名upload.example.com
(当然,使用您的真实域名),因此流量可以点击它,然后关闭子域的保护,以便可以上传大文件。
我更新了我的.env
文件并添加了SESSION_DOMAIN
变量,以便用户的会话可以在example.com
和upload.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,然后登录到网站并上传了一个大文件! :)