兰空图床(lsky-pro) 利用反向代理实现跨域访问
本文最后更新于 2024-07-25,
若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益, 请联系我 删除。
本站只有Telegram群组为唯一交流群组, 点击加入
文章内容有误?申请成为本站文章修订者或作者? 向站长提出申请
前言
我的兰空图床一直都是使用docker搭建的,易于迁移和备份。但是最近出了点小问题,于是打算推倒重来,顺便利用redis作为缓存器,于是使用传统的php搭建方法。
准备
本次使用宝塔国际版(aapanel)此版本宝塔无需登录,即开即用,安装脚本
URL=https://www.aapanel.com/script/install_6.0_en.sh && if [ -f /usr/bin/curl ];then curl -ksSO "$URL" ;else wget --no-check-certificate -O install_6.0_en.sh "$URL";fi;bash install_6.0_en.sh aapanel
需要安装好以下的软件和拓展,以及函数解禁
- PHP >= 8.0.2
- BCMath PHP 扩展
- Ctype PHP 扩展
- DOM PHP 拓展
- Fileinfo PHP 扩展
- JSON PHP 扩展
- Mbstring PHP 扩展
- OpenSSL PHP 扩展
- PDO PHP 扩展
- Tokenizer PHP 扩展
- XML PHP 扩展
- Imagick 拓展
- Redis PHP 拓展
- exec、shell_exec 函数
- readlink、symlink 函数
- putenv、getenv 函数
- nginx 1.24 或者apache 2.4
安装
-
将文件上传到宝塔的网站文件夹内释放
-
关闭网站跨域保护(XSS)设置文件夹为public,保存。
-
设置伪静态
Apache 直接使用程序自带的 .htaccess 即可,无需配置任何参数。nginx需要配置下伪静态,代码如下:
location / { try_files $uri $uri/ /index.php?$query_string; }
-
跳转到绑定的域名即可配置(先要有一条域名并且解析才可以)
反向代理
宝塔搭建的请参照下文:
以两台服务器为例,如果你需要使用一台服务器作为跳板机(例如CN2线路的服务器)。给网站图片进行加速(正常情况下使用源站的网络足够正常加载图片,感觉负载压力大可以考虑使用aws或者cloudflare的cdn进行缓存)。那么可以按照以下方式进行配置。
A服务器作为图片源站服务器,例如ip地址为188.88.8.88
B服务器作为专线加速跳板服务器,例如IP地址为199.99.9.99
先在A服务器的域名管理处配置上你的图床地址,配置好SSL证书。
接着在B服务器配置上一条同样的域名,配置好同样的SSL证书。
接着在反向代理处填写上你的目标地址,必须是A服务器的IP地址。格式为 https://地址:443
必须使用https+443端口,否则图床无法使用!!
同时在存储策略处设置好你的域名:
保存即可完成配置。
docker搭建的请参照下文:
参考教程:安装及使用
⚠️Nginx Proxy Manager(以下简称NPM)会用到80、443端口,所以本机不能占用(比如原来就有Nginx)
互联网使用请确保完成了域名解析
建议先到dns解析商处将你的ip和子域名进行绑定后,再进行下一步配置操作!
1、修改/config/app.php
'url' => env('APP\_URL', '你的网站链接'),
'asset\_url' => env('ASSET\_URL', '你的网站链接'),
2、修改/app/Providers/ApServiceProvider.php
第 32 行下面追加一行:
\\Illuminate\\Support\\Facades\\URL::forceScheme('https');
3、反代配置中增加一行
proxy\_set\_header X-Forwarded-Host \$http\_host;
常见问题
官方问题解决文档
https://docs.lsky.pro/docs/free/v2/quick-start/questions.html
反代/套CDN后无法加载静态文件(css, js)(以及安装时点击无反应)
编辑 .env 文件,追加一行:
ASSET_URL=https://你的域名
修改/app/Providers/ApServiceProvider.php
第 32 行下面追加一行:
\\Illuminate\\Support\\Facades\\URL::forceScheme('https');
Token快捷获取方法
CURL
- 简洁一点:
curl -X POST -F "email=your_email@address" -F "password=your_passwd" https://your.domain/api/v1/tokens
- 展开:
curl --location --request POST 'https://your.domain/api/v1/tokens' \ --form 'email="your_email@address"' \ --form 'password="your_passwd"'
Shell wget
wget --no-check-certificate --quiet \
--method POST \
--timeout=0 \
--header '' \
--body-data 'email=your email address&password=password' \
'https://pic.iqy.ink/api/v1/tokens'