- Stirling PDF: 使用 SERVER_SERVLET_CONTEXT_PATH=/pdf 从根本解决 base href 问题 - TrWebOCR: 用精确文件名 location 代替 sub_filter(后端 gzip 导致 sub_filter 不生效) - Lama Cleaner: 同样用精确 location 匹配所有 API 路径(/model, /inpaint 等) - PDF API 用 /api/v1/ 精确匹配,和 imgcompress 的 /api/ 不冲突 - OCR API 用 /api/tr-run/ 精确匹配 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
148 lines
5.5 KiB
Plaintext
148 lines
5.5 KiB
Plaintext
server {
|
||
listen 18000;
|
||
client_max_body_size 500M;
|
||
|
||
# ===== 1. Stirling PDF =====
|
||
# <base href="/"> 导致相对路径从根开始,用sub_filter改成/pdf/
|
||
# context-path=/pdf,所有PDF资源都在 /pdf/ 下,无冲突
|
||
location /pdf/ {
|
||
proxy_pass http://127.0.0.1:18080/pdf/;
|
||
proxy_set_header Host $host;
|
||
proxy_buffering off;
|
||
client_max_body_size 500M;
|
||
}
|
||
|
||
# ===== 2. Excalidraw =====
|
||
location /draw/ {
|
||
proxy_pass http://127.0.0.1:18081/;
|
||
proxy_set_header Host $host;
|
||
}
|
||
location /assets/ { proxy_pass http://127.0.0.1:18081/assets/; }
|
||
location /v1/ai/ {
|
||
proxy_pass http://127.0.0.1:18082/v1/ai/;
|
||
proxy_set_header Host $host;
|
||
proxy_read_timeout 60s;
|
||
proxy_buffering off;
|
||
}
|
||
|
||
# ===== 3. TrWebOCR =====
|
||
# 不用 sub_filter(后端返回 gzip 无法改写),直接用精确文件名 location
|
||
location /ocr/ {
|
||
proxy_pass http://127.0.0.1:18083/;
|
||
proxy_set_header Host $host;
|
||
proxy_buffering off;
|
||
}
|
||
# OCR 的 JS/CSS(精确文件名,不会和 Overleaf 冲突)
|
||
location /js/app.7dd3e457.js { proxy_pass http://127.0.0.1:18083/js/app.7dd3e457.js; }
|
||
location /js/chunk-vendors.ae13d15d.js { proxy_pass http://127.0.0.1:18083/js/chunk-vendors.ae13d15d.js; }
|
||
location /css/app.77d50329.css { proxy_pass http://127.0.0.1:18083/css/app.77d50329.css; }
|
||
location /css/chunk-vendors.9d96bc97.css { proxy_pass http://127.0.0.1:18083/css/chunk-vendors.9d96bc97.css; }
|
||
# OCR 的 API
|
||
location /api/tr-run/ {
|
||
proxy_pass http://127.0.0.1:18083/api/tr-run/;
|
||
proxy_set_header Host $host;
|
||
proxy_buffering off;
|
||
client_max_body_size 50M;
|
||
}
|
||
location /tools/ocr_text/ {
|
||
proxy_pass http://127.0.0.1:18083/tools/ocr_text/;
|
||
proxy_set_header Host $host;
|
||
}
|
||
|
||
# ===== 4. LibreTranslate =====
|
||
location /translate/ {
|
||
proxy_pass http://127.0.0.1:18084/;
|
||
proxy_set_header Host $host;
|
||
}
|
||
location /static/ { proxy_pass http://127.0.0.1:18084/static/; }
|
||
location /languages { proxy_pass http://127.0.0.1:18084/languages; }
|
||
location /frontend/settings { proxy_pass http://127.0.0.1:18084/frontend/settings; }
|
||
location /detect { proxy_pass http://127.0.0.1:18084/detect; }
|
||
|
||
# ===== 5. PPTist =====
|
||
location /ppt/ {
|
||
proxy_pass http://127.0.0.1:18085/;
|
||
proxy_set_header Host $host;
|
||
proxy_buffering off;
|
||
}
|
||
location /pptapi/ {
|
||
proxy_pass http://127.0.0.1:18086/;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Connection "";
|
||
proxy_buffering off;
|
||
proxy_cache off;
|
||
}
|
||
|
||
# ===== 6. imgcompress =====
|
||
location /imgcompress/ {
|
||
proxy_pass http://127.0.0.1:18087/;
|
||
proxy_set_header Host $host;
|
||
}
|
||
location /_next/ { proxy_pass http://127.0.0.1:18087/_next/; }
|
||
location /api/ {
|
||
proxy_pass http://127.0.0.1:18087/api/;
|
||
proxy_set_header Host $host;
|
||
proxy_buffering off;
|
||
client_max_body_size 500M;
|
||
}
|
||
|
||
# ===== 7. Lama Cleaner =====
|
||
# sub_filter 不生效(后端 gzip),用精确 location 匹配所有 API 和静态资源
|
||
location /lama/ {
|
||
proxy_pass http://127.0.0.1:18088/;
|
||
proxy_set_header Host $host;
|
||
proxy_buffering off;
|
||
}
|
||
# Lama 静态资源(精确文件名)
|
||
location = /static/js/main.1bd455bc.js { proxy_pass http://127.0.0.1:18088/static/js/main.1bd455bc.js; }
|
||
location = /static/css/main.c28d98ca.css { proxy_pass http://127.0.0.1:18088/static/css/main.c28d98ca.css; }
|
||
# Lama API(全部用精确路径)
|
||
location = /inpaint {
|
||
proxy_pass http://127.0.0.1:18088/inpaint;
|
||
proxy_set_header Host $host;
|
||
proxy_buffering off;
|
||
proxy_read_timeout 300s;
|
||
client_max_body_size 500M;
|
||
}
|
||
location = /inputimage { proxy_pass http://127.0.0.1:18088/inputimage; proxy_set_header Host $host; proxy_buffering off; }
|
||
location = /model { proxy_pass http://127.0.0.1:18088/model; proxy_set_header Host $host; }
|
||
location = /is_desktop { proxy_pass http://127.0.0.1:18088/is_desktop; }
|
||
location = /is_disable_model_switch { proxy_pass http://127.0.0.1:18088/is_disable_model_switch; }
|
||
location = /is_enable_file_manager { proxy_pass http://127.0.0.1:18088/is_enable_file_manager; }
|
||
location = /interactive_seg { proxy_pass http://127.0.0.1:18088/interactive_seg; proxy_set_header Host $host; }
|
||
location = /save_image { proxy_pass http://127.0.0.1:18088/save_image; proxy_set_header Host $host; client_max_body_size 500M; }
|
||
|
||
# ===== 8. webp2jpg =====
|
||
location /webp2jpg/ {
|
||
proxy_pass http://127.0.0.1:18089/;
|
||
proxy_set_header Host $host;
|
||
}
|
||
location /cdn/ { proxy_pass http://127.0.0.1:18089/cdn/; }
|
||
|
||
# ===== 9. Overleaf =====
|
||
location /overleaf/ {
|
||
proxy_pass http://127.0.0.1:18090/;
|
||
proxy_set_header Host $host;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection "upgrade";
|
||
proxy_buffering off;
|
||
}
|
||
|
||
# ===== 10. LaTeX 公式编辑器 =====
|
||
location /latex/ {
|
||
proxy_pass http://127.0.0.1:18091/;
|
||
proxy_set_header Host $host;
|
||
}
|
||
|
||
# ===== 默认回落到 Overleaf =====
|
||
location / {
|
||
proxy_pass http://127.0.0.1:18090;
|
||
proxy_set_header Host $host;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection "upgrade";
|
||
proxy_buffering off;
|
||
}
|
||
}
|