sub2api nginx配置如何再优化

Rainbear 2026-07-31 10:16 1

现在使用的是nginx反代docker容器里的sub2api,首字时间较长,找ai优化了一版本感觉还是没用,有没有佬看看配置怎么再改改比较好



nginx.conf


user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
#rt:Nginx 总请求耗时。
#urt:上游应用响应耗时。
#uaddr:实际代理到的上游地址。
#cf:Cloudflare Ray ID,方便关联 Cloudflare 请求。
log_format main '$remote_addr - $remote_user [$time_local] '
'"$host" "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" '
'rt=$request_time '
'urt=$upstream_response_time '
'uaddr=$upstream_addr '
'cache="$upstream_cache_status" '
'cf="$http_cf_ray"';

access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
client_max_body_size 100m;
client_body_buffer_size 256k;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;

# ========================================
# 安全配置
# ========================================

# 隐藏 nginx 版本号
server_tokens off;

# 安全响应头
#add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;

# HSTS - 强制 HTTPS(开启前确保所有站点 HTTPS 正常,取消注释即可启用)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

# 请求速率限制(每 IP 每秒 10 个请求,突发允许 20)
#limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;

# 连接数限制(每 IP 最多 50 个并发连接)
#limit_conn_zone $binary_remote_addr zone=conn_limit:10m;

# ========================================
# 性能配置
# ========================================

# Gzip
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript text/xml;

# SSL 全局优化
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;

# Cloudflare 真实 IP 还原
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 131.0.72.0/22;
real_ip_header CF-Connecting-IP;

resolver_timeout 5s;

# 加载所有独立站点配置
include /etc/nginx/conf.d/*.conf;
}

sub.conf


upstream sub2api_backend {
zone sub2api_backend 64k;
resolver 127.0.0.11 valid=10s ipv6=off;
server sub2api:8080 resolve;
keepalive 32;
}

server {
listen 80;
server_name sub.xx.xx;
return 301 https://$host$request_uri;
}

server {
listen 443 ssl;
http2 on;
server_name sub.xx.xx;

ssl_certificate /etc/nginx/ssl/sub.xx.xx/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/sub.xx.xx/privkey.pem;

# 静态资源缓存:适合 Vite/React 这类 hash 文件
location ^~ /assets/ {
proxy_pass http://sub2api_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

proxy_hide_header Cache-Control;
proxy_hide_header Expires;
add_header Cache-Control "public, max-age=31536000, immutable" always;
}

# logo 如果稳定不常变,也可以缓存;如果经常换,就不要设太长
location = /logo.png {
proxy_pass http://sub2api_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

proxy_hide_header Cache-Control;
proxy_hide_header Expires;
add_header Cache-Control "public, max-age=604800" always;
}

# 无 /v1 前缀的模型 API,兼容 Codex Desktop 等客户端
location ~ ^/(responses|messages|chat/completions|completions|embeddings|files|uploads|batches)(/.*)?$ {
proxy_pass http://sub2api_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

proxy_buffering off;
proxy_cache off;
proxy_request_buffering off;
chunked_transfer_encoding on;

proxy_read_timeout 300s;
proxy_send_timeout 300s;
}

# 流式模型接口:保持关闭 buffering
location ^~ /v1/ {
proxy_pass http://sub2api_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

proxy_buffering off;
proxy_cache off;
proxy_request_buffering off;
chunked_transfer_encoding on;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}

# 其他普通网页和 API
location / {
proxy_pass http://sub2api_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

proxy_read_timeout 120s;
proxy_send_timeout 120s;
}
}
最新回复 (13)
  • cc 07-31 10:36
    1


    感觉优化nginx没啥大效果,优化线路才是重点

  • Rainbear 楼主 07-31 10:40
    2

    服务器用的是netcup美国的服务器直连,访问套了一层cf

  • cc 07-31 10:41
    3


    dmit的三网优化线路中转,服务器是hostdzire,不套cf。sub2api里面还加了家宽

  • Kapthy 07-31 10:43
    4

    别套cf,我记得你不订阅的话cf超时120s就给你断了

  • Cimix 07-31 10:44
    5

    没啥太大作用,更应该折腾下线路


    套了CF可能比直连还慢

  • Rainbear 楼主 07-31 10:45
    6

    当时买服务器只考虑了稳定,没买线路机

  • Rainbear 楼主 07-31 10:46
    7

    是有超过120s就断,但是机器线路不好,只能套cf了

  • cc 07-31 10:46
    8

    稳定才需要上线路机啊,普通线路的容易丢包不稳定

  • Rainbear 楼主 07-31 10:47
    9

    看来确实得折腾下线路问题了,当时寻思着都是都是美国服务,整个美国服务器,套个cf应该也不会差到哪去,没想到实际情况相差甚远

  • Rainbear 楼主 07-31 10:48
    10

    我在netcup前再套一层线路机转发是不是就行了

  • Rainbear 楼主 07-31 10:50
    11

    线路机和服务机之间的转发用啥转啊

  • lamlam 07-31 10:58
    12

    自用的话,感觉优化的性价比不高,多人用可以优化一下

  • Lion_Cai 08-02 14:54
    13

    你这家宽用的是哪家的?能分享下吗。

* 帖子来源Linux.do
返回