# openapi.rrrosmontis.icu 统一入口(原 api/pixiv/apixiv.bu4.ren 合并) # /pixiv/ /bilibili/ -> openapi 聚合层 127.0.0.1:9888 (main.py) # /img-master/ -> i.pximg.net 图片反代(原 apixiv.bu4.ren 逻辑,方案二) 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; } # ---- 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; }