diff --git a/README.md b/README.md
index 2779760..dcef62f 100644
--- a/README.md
+++ b/README.md
@@ -190,6 +190,7 @@ networks:
| REDIS_URL | redis 连接 url,若 NEXT_PUBLIC_STORAGE_TYPE 为 redis 则必填 | 连接 url | 空 |
| NEXT_PUBLIC_ENABLE_REGISTER | 是否开放注册,仅在 redis 部署时生效 | true / false | false |
| NEXT_PUBLIC_SEARCH_MAX_PAGE | 搜索接口可拉取的最大页数 | 1-50 | 5 |
+| NEXT_PUBLIC_IMAGE_PROXY | 默认的浏览器端图片代理 | url prefix | (空) |
## 配置说明
diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx
index 9e17e5d..5ca82f1 100644
--- a/src/app/admin/page.tsx
+++ b/src/app/admin/page.tsx
@@ -50,6 +50,7 @@ interface SiteConfig {
Announcement: string;
SearchDownstreamMaxPage: number;
SiteInterfaceCacheTime: number;
+ ImageProxy: string;
}
// 视频源数据类型
@@ -947,6 +948,7 @@ const SiteConfigComponent = ({ config }: { config: AdminConfig | null }) => {
Announcement: '',
SearchDownstreamMaxPage: 1,
SiteInterfaceCacheTime: 7200,
+ ImageProxy: '',
});
// 保存状态
const [saving, setSaving] = useState(false);
@@ -958,7 +960,10 @@ const SiteConfigComponent = ({ config }: { config: AdminConfig | null }) => {
useEffect(() => {
if (config?.SiteConfig) {
- setSiteSettings(config.SiteConfig);
+ setSiteSettings({
+ ...config.SiteConfig,
+ ImageProxy: config.SiteConfig.ImageProxy || '',
+ });
}
}, [config]);
@@ -1092,6 +1097,41 @@ const SiteConfigComponent = ({ config }: { config: AdminConfig | null }) => {
/>
+ {/* 图片代理 */}
+
+
+
+ !isD1Storage &&
+ setSiteSettings((prev) => ({
+ ...prev,
+ ImageProxy: e.target.value,
+ }))
+ }
+ disabled={isD1Storage}
+ className={`w-full px-3 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100 focus:ring-2 focus:ring-green-500 focus:border-transparent ${
+ isD1Storage ? 'opacity-50 cursor-not-allowed' : ''
+ }`}
+ />
+
+ 用于代理图片访问,解决跨域或访问限制问题。留空则不使用代理。
+
+
+
{/* 操作按钮 */}