本文教你如何在无法访问Imgur时通过反代以实现在flarum论坛上使用imgur上传图片功能
前言:准备ID
启用扩展后,系统会提示您设置 Imgur 客户端 ID。您可以在这里用您的 Imgur 账号获取一个。请务必在表格中选择 「Anonymous usage without user authorization」。另外需要注意的是,界面上显然有一个BUG,所以你可能需要选择第二个选项,然后再选择第三个选项,否则会被要求填写「授权回调URL」。如果你在创建开发应用时遇到问题,请在国际社区回复,原作者帮助你。 ——来自https://discuss.flarum.org.cn/d/1786
nginx搭建反代
具体的内容可以参考搜索引擎和这篇文章中的nginx部分。这里简单说一下要点:
- 建议反代地址和论坛使用同一域名。如果你的论坛是
https://论坛.域名.com
的话最好把反代地址设置为类似https://论坛.域名.com/imgur
的形式。
- 多在生产环境做测试,以免出现问题
- 注意是否多加/漏写了斜杠
下面分享一下我的配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| location ^~ /imgur/ { proxy_pass https://i.imgur.com/; proxy_buffering off; proxy_set_header Referer ""; proxy_set_header User-Agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade "websocket"; proxy_set_header Connection "Upgrade"; # 取消下面的注释可以启用 Nginx 缓存 #proxy_cache STATIC; #proxy_cache_key $uri; #proxy_cache_valid 200 30d; #proxy_cache_use_stale error timeout invalid_header updating # http_500 http_502 http_503 http_504; #add_header X-Nginx-Cache $upstream_cache_status; } # API 镜像 location ^~ /imgur-api/ { # 跨域,注意不要和前面的跨域策略冲突/重复 add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; proxy_pass https://api.imgur.com/; proxy_buffering off; proxy_set_header Referer ""; proxy_set_header User-Agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade "websocket"; proxy_set_header Connection "Upgrade"; }
|
在nginx主管https://论坛.域名.com
的配置文件处加上反代行后记得重启nginx并进行测试。这里实际上是代理了两个地方:api上传处和图片显示处
部署到flarum使用
安装改版
笔者fork并制作了一个改版。下面两种方法
方式1
- 先按照imgur插件发布地址内所述的安装方式安装原版插件。一般情况下就是一行
composer require matteocontrini/flarum-imgur-upload
。
- 进入
/到flarum安装目录/vendor/matteocontrini/
并删除flarum-imgur-upload文件夹
git clone https://github.com/LCinHK/flarum-imgur-upload.git
生成新的文件夹
方式2
直接使用改版composer require lcinhk/flarum-imgur-upload
使用
在admin管理页,先清除一遍缓存再进入插件页点击imgur-upload插件的设置,应该出现以下内容,否则请检查上一步是否有做错地方。
请将https://api.imgur.com/3/upload
和https://i.imgur.com
修改为你一一对应的反代地址。并注意:
- 是否多加/漏写了斜杠。
- 上传的URL是否漏写/3/upload
- 由于是图片上传,也可换成/3/image
效果
效果与没改之前应该是一模一样的。
(以下部分为2020/7/30新增)
上传视频
在本人提交的PR merge后, Imgur视频上传插件也支持使用反代了。
1
| composer require ejin/upload-video
|
注意事项:
- 视频只能使用/3/upload/
- 斜杠规则与图片上传插件不同,注意
- 上传速度太慢+跨域容易出错,请注意大小限制