- location ^~ /img-original/:与 /img-master/ 同参数(UA/Referer/缓存) - 修复 get_image 源① (App API) 拿到原图后下载 404 的断裂
146 lines
5.6 KiB
Plaintext
146 lines
5.6 KiB
Plaintext
# openapi.rrrosmontis.icu 统一入口(原 api/pixiv/apixiv.bu4.ren 合并)
|
||
# /pixiv/ /bilibili/ -> openapi 聚合层 127.0.0.1:9888 (main.py)
|
||
# /img-master/ /img-original/ -> i.pximg.net 图片反代(原 apixiv.bu4.ren 逻辑,方案二)
|
||
# 2026-09-02 补 /img-original/:App API 原图 URL 为 /img-original/ 前缀,此前未配置导致 404
|
||
|
||
proxy_cache_path /var/cache/nginx/openapi_img_cache levels=1:2 keys_zone=openapi_img_cache:20m inactive=1d max_size=5g;
|
||
|
||
server {
|
||
listen 80;
|
||
listen [::]:80;
|
||
server_name openapi.rrrosmontis.icu;
|
||
location /.well-known/acme-challenge/ {
|
||
root /var/www/acme;
|
||
}
|
||
location / {
|
||
return 301 https://$host$request_uri;
|
||
}
|
||
}
|
||
|
||
server {
|
||
listen 443 ssl http2;
|
||
server_name openapi.rrrosmontis.icu;
|
||
|
||
ssl_certificate /home/openapi/cert/openapi.rrrosmontis.icu/fullchain.pem;
|
||
ssl_certificate_key /home/openapi/cert/openapi.rrrosmontis.icu/privkey.pem;
|
||
ssl_protocols TLSv1.2 TLSv1.3;
|
||
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:!MD5;
|
||
ssl_prefer_server_ciphers on;
|
||
ssl_session_cache shared:SSL:10m;
|
||
ssl_session_timeout 10m;
|
||
add_header Strict-Transport-Security "max-age=31536000";
|
||
error_page 497 https://$host$request_uri;
|
||
|
||
resolver 8.8.8.8 1.1.1.1 ipv6=off valid=300s;
|
||
|
||
# ---- 图片反代 i.pximg.net(原 apixiv.bu4.ren 逻辑,路径前缀 /img-master/)----
|
||
location ^~ /img-master/ {
|
||
set $backend i.pximg.net;
|
||
proxy_pass https://$backend$request_uri;
|
||
|
||
proxy_set_header Host i.pximg.net;
|
||
proxy_set_header User-Agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";
|
||
proxy_set_header Referer "https://www.pixiv.net/";
|
||
|
||
proxy_ssl_server_name on;
|
||
proxy_ssl_name i.pximg.net;
|
||
|
||
proxy_connect_timeout 10s;
|
||
proxy_read_timeout 300s;
|
||
|
||
proxy_cache openapi_img_cache;
|
||
proxy_cache_valid 200 7d;
|
||
proxy_cache_valid 404 5m;
|
||
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
|
||
proxy_cache_lock on;
|
||
proxy_cache_key "$scheme$proxy_host$request_uri";
|
||
|
||
add_header X-Cache-Status $upstream_cache_status;
|
||
}
|
||
|
||
# ---- 图片反代 i.pximg.net(/img-original/,App API 原图路径,2026-09-02 补)----
|
||
location ^~ /img-original/ {
|
||
set $backend i.pximg.net;
|
||
proxy_pass https://$backend$request_uri;
|
||
|
||
proxy_set_header Host i.pximg.net;
|
||
proxy_set_header User-Agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";
|
||
proxy_set_header Referer "https://www.pixiv.net/";
|
||
|
||
proxy_ssl_server_name on;
|
||
proxy_ssl_name i.pximg.net;
|
||
|
||
proxy_connect_timeout 10s;
|
||
proxy_read_timeout 300s;
|
||
|
||
proxy_cache openapi_img_cache;
|
||
proxy_cache_valid 200 7d;
|
||
proxy_cache_valid 404 5m;
|
||
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
|
||
proxy_cache_lock on;
|
||
proxy_cache_key "$scheme$proxy_host$request_uri";
|
||
|
||
add_header X-Cache-Status $upstream_cache_status;
|
||
}
|
||
|
||
# ---- pixiv(openapi 聚合层 /pixiv/get_image)----
|
||
location ^~ /pixiv/ {
|
||
proxy_pass http://127.0.0.1:9888;
|
||
proxy_set_header Host $http_host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Real-Port $remote_port;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
proxy_set_header X-Forwarded-Host $host;
|
||
proxy_set_header X-Forwarded-Port $server_port;
|
||
proxy_set_header REMOTE-HOST $remote_addr;
|
||
proxy_connect_timeout 60s;
|
||
proxy_send_timeout 600s;
|
||
proxy_read_timeout 600s;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection $connection_upgrade;
|
||
}
|
||
|
||
# ---- bilibili(openapi 聚合层 /bilibili/get_video)----
|
||
location ^~ /bilibili/ {
|
||
proxy_pass http://127.0.0.1:9888;
|
||
proxy_set_header Host $http_host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Real-Port $remote_port;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
proxy_set_header X-Forwarded-Host $host;
|
||
proxy_set_header X-Forwarded-Port $server_port;
|
||
proxy_set_header REMOTE-HOST $remote_addr;
|
||
proxy_connect_timeout 60s;
|
||
proxy_send_timeout 600s;
|
||
proxy_read_timeout 600s;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection $connection_upgrade;
|
||
}
|
||
|
||
# ---- 其余(根路径 / )→ 9888(main.py:跳转文章页)----
|
||
location / {
|
||
proxy_pass http://127.0.0.1:9888;
|
||
proxy_set_header Host $http_host;
|
||
proxy_set_header X-Real-IP $remote_addr;
|
||
proxy_set_header X-Real-Port $remote_port;
|
||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||
proxy_set_header X-Forwarded-Proto $scheme;
|
||
proxy_set_header X-Forwarded-Host $host;
|
||
proxy_set_header X-Forwarded-Port $server_port;
|
||
proxy_set_header REMOTE-HOST $remote_addr;
|
||
proxy_connect_timeout 60s;
|
||
proxy_send_timeout 600s;
|
||
proxy_read_timeout 600s;
|
||
proxy_http_version 1.1;
|
||
proxy_set_header Upgrade $http_upgrade;
|
||
proxy_set_header Connection $connection_upgrade;
|
||
}
|
||
|
||
access_log /var/log/nginx/openapi.rrrosmontis.icu.log;
|
||
error_log /var/log/nginx/openapi.rrrosmontis.icu.error.log;
|
||
}
|