打开h5以查看主站 Nginx 配置适配全部静态文件缓存 2 小时核心规则说明匹配路径/static/**全部转发到 B 服务器 IP/static/不限文件类型图片、js、css、字体、视频静态资源全部放行浏览器缓存过期2 小时Nginx 代理缓存有效期同步 2 小时一、主站站点配置片段nginxserver { listen 443 ssl; server_name www.yourdomain.com; ssl_certificate cert/xxx.crt; ssl_certificate_key cert/xxx.key; # 网站主业务 location / { root /www/main; index index.html index.htm; } # 所有 /static/ 下静态资源转发至B服务器 location /static/ { # 替换为你的B服务器IP proxy_pass http://B服务器IP/static/; # 代理请求头标准配置 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; # Nginx本地代理缓存 2小时 proxy_cache static_cache; proxy_cache_valid 200 304 2h; # 浏览器客户端缓存 2小时 expires 2h; add_header Cache-Control public, max-age7200; # 超时控制 proxy_connect_timeout 8s; proxy_read_timeout 20s; # 防盗链可选防止别人盗资源 valid_referers none blocked server_names *.yourdomain.com yourdomain.com; if ($invalid_referer) { return 403; } } }二、nginx.conf http 块添加缓存定义打开/etc/nginx/nginx.conf在http {}内部加入nginxhttp { # 其他原有配置... # 静态文件代理缓存目录提前执行 mkdir -p /var/nginx/cache/static proxy_cache_path /var/nginx/cache/static levels1:2 keys_zonestatic_cache:100m inactive4h max_size20g; }参数解释keys_zonestatic_cache:100m分配 100M 内存存缓存索引inactive4h4 小时没人访问自动清理缓存文件比 2h 长即可max_size20g缓存磁盘最大占用 20G可按需调整三、B 服务器 Nginx 配置提供全部静态文件B 无域名仅 IP 访问存放所有 /static 静态资源限制仅主站可访问nginxserver { listen 80; server_name _; root /data/files; # static文件夹放在这个目录下 # 所有静态文件统一缓存2小时 location ~ .* { expires 2h; add_header Cache-Control public, max-age7200; } # 白名单只允许主站服务器IP请求禁止公网直接访问B服务器 location / { allow 主站服务器IP; deny all; } }目录结构示例B 服务器plaintext/data/files/ └── static/ ├── js/main.js ├── css/style.css ├── img/1.png ├── font/font.ttf └── video/demo.mp4四、操作命令创建缓存目录bash运行mkdir -p /var/nginx/cache/static chmod 700 /var/nginx/cache/static校验配置并重载bash运行nginx -t systemctl reload nginx五、路径转发逻辑示例访问https://www.yourdomain.com/static/js/app.js转发至 B 服务器http://B服务器IP/static/js/app.js补充说明expires 2h 浏览器缓存 2 小时max-age7200等价 7200 秒不限文件后缀js/css/png/ttf/mp4 等全部支持代理缓存 2 小时2 小时内重复请求不会穿透到 B 服务器减轻 B 服务器压力如果是单独域名访问场景 1adata.a.com 和 admin.a.com 共用同一台主站 Nginx同一个 conf只需要在server_name把两个域名都写上原有/park/static/代理配置完全不用改自动生效。nginxserver { listen 80; # 两个域名都匹配 server_name admin.a.com data.a.com; # 放在最顶部不变 location ^~ /park/static/ { add_header X-Hit-ParkStatic true; proxy_pass http://192.168.120.44:8010/static/; 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_cache static_cache; proxy_cache_valid 200 304 2h; expires 2h; add_header Cache-Control public, max-age7200; proxy_connect_timeout 8s; proxy_read_timeout 20s; } # 你的其他业务location location / { root D:/xxx; } }访问http://data.a.com/park/static/aa.txt会自动转发到 B 服务器路径映射逻辑不变/park/static/aa.txt→http://192.168.120.44:8010/static/aa.txt场景 2data.a.com 单独一台 Nginx、独立配置文件新建一个站点 server 块复制一模一样的/park/static/代理规则只改server_namenginxserver { listen 80; server_name data.a.com; # 同样放在最顶部 location ^~ /park/static/ { add_header X-Hit-ParkStatic true; proxy_pass http://192.168.120.44:8010/static/; 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_cache static_cache; proxy_cache_valid 200 304 2h; expires 2h; add_header Cache-Control public, max-age7200; proxy_connect_timeout 8s; proxy_read_timeout 20s; } # data域名自身业务根目录 location / { root D:/data-project; } }注意独立配置文件的http{}块里依然要保留proxy_cache_path定义static_cache否则启动报错。额外如果需要跨域前端两个域名互相加载静态文件在/park/static/内部增加跨域头允许两个域名访问资源nginxlocation ^~ /park/static/ { # 允许两个域名跨域请求 add_header Access-Control-Allow-Origin http://admin.a.com http://data.a.com; add_header Access-Control-Allow-Methods GET,OPTIONS; if ($request_method OPTIONS) { return 204; } # 下面原有代理配置不变 add_header X-Hit-ParkStatic true; proxy_pass http://192.168.120.44:8010/static/; ... }核心不变点无论用哪个域名访问/park/static/xxx代理转发目标 B 服务器地址不变路径替换逻辑不变缓存、2 小时过期配置完全复用不用改动。打开h5以查看
nginx配置公网与内网访问(域名+内网ip)
发布时间:2026/6/26 1:56:35
打开h5以查看主站 Nginx 配置适配全部静态文件缓存 2 小时核心规则说明匹配路径/static/**全部转发到 B 服务器 IP/static/不限文件类型图片、js、css、字体、视频静态资源全部放行浏览器缓存过期2 小时Nginx 代理缓存有效期同步 2 小时一、主站站点配置片段nginxserver { listen 443 ssl; server_name www.yourdomain.com; ssl_certificate cert/xxx.crt; ssl_certificate_key cert/xxx.key; # 网站主业务 location / { root /www/main; index index.html index.htm; } # 所有 /static/ 下静态资源转发至B服务器 location /static/ { # 替换为你的B服务器IP proxy_pass http://B服务器IP/static/; # 代理请求头标准配置 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; # Nginx本地代理缓存 2小时 proxy_cache static_cache; proxy_cache_valid 200 304 2h; # 浏览器客户端缓存 2小时 expires 2h; add_header Cache-Control public, max-age7200; # 超时控制 proxy_connect_timeout 8s; proxy_read_timeout 20s; # 防盗链可选防止别人盗资源 valid_referers none blocked server_names *.yourdomain.com yourdomain.com; if ($invalid_referer) { return 403; } } }二、nginx.conf http 块添加缓存定义打开/etc/nginx/nginx.conf在http {}内部加入nginxhttp { # 其他原有配置... # 静态文件代理缓存目录提前执行 mkdir -p /var/nginx/cache/static proxy_cache_path /var/nginx/cache/static levels1:2 keys_zonestatic_cache:100m inactive4h max_size20g; }参数解释keys_zonestatic_cache:100m分配 100M 内存存缓存索引inactive4h4 小时没人访问自动清理缓存文件比 2h 长即可max_size20g缓存磁盘最大占用 20G可按需调整三、B 服务器 Nginx 配置提供全部静态文件B 无域名仅 IP 访问存放所有 /static 静态资源限制仅主站可访问nginxserver { listen 80; server_name _; root /data/files; # static文件夹放在这个目录下 # 所有静态文件统一缓存2小时 location ~ .* { expires 2h; add_header Cache-Control public, max-age7200; } # 白名单只允许主站服务器IP请求禁止公网直接访问B服务器 location / { allow 主站服务器IP; deny all; } }目录结构示例B 服务器plaintext/data/files/ └── static/ ├── js/main.js ├── css/style.css ├── img/1.png ├── font/font.ttf └── video/demo.mp4四、操作命令创建缓存目录bash运行mkdir -p /var/nginx/cache/static chmod 700 /var/nginx/cache/static校验配置并重载bash运行nginx -t systemctl reload nginx五、路径转发逻辑示例访问https://www.yourdomain.com/static/js/app.js转发至 B 服务器http://B服务器IP/static/js/app.js补充说明expires 2h 浏览器缓存 2 小时max-age7200等价 7200 秒不限文件后缀js/css/png/ttf/mp4 等全部支持代理缓存 2 小时2 小时内重复请求不会穿透到 B 服务器减轻 B 服务器压力如果是单独域名访问场景 1adata.a.com 和 admin.a.com 共用同一台主站 Nginx同一个 conf只需要在server_name把两个域名都写上原有/park/static/代理配置完全不用改自动生效。nginxserver { listen 80; # 两个域名都匹配 server_name admin.a.com data.a.com; # 放在最顶部不变 location ^~ /park/static/ { add_header X-Hit-ParkStatic true; proxy_pass http://192.168.120.44:8010/static/; 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_cache static_cache; proxy_cache_valid 200 304 2h; expires 2h; add_header Cache-Control public, max-age7200; proxy_connect_timeout 8s; proxy_read_timeout 20s; } # 你的其他业务location location / { root D:/xxx; } }访问http://data.a.com/park/static/aa.txt会自动转发到 B 服务器路径映射逻辑不变/park/static/aa.txt→http://192.168.120.44:8010/static/aa.txt场景 2data.a.com 单独一台 Nginx、独立配置文件新建一个站点 server 块复制一模一样的/park/static/代理规则只改server_namenginxserver { listen 80; server_name data.a.com; # 同样放在最顶部 location ^~ /park/static/ { add_header X-Hit-ParkStatic true; proxy_pass http://192.168.120.44:8010/static/; 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_cache static_cache; proxy_cache_valid 200 304 2h; expires 2h; add_header Cache-Control public, max-age7200; proxy_connect_timeout 8s; proxy_read_timeout 20s; } # data域名自身业务根目录 location / { root D:/data-project; } }注意独立配置文件的http{}块里依然要保留proxy_cache_path定义static_cache否则启动报错。额外如果需要跨域前端两个域名互相加载静态文件在/park/static/内部增加跨域头允许两个域名访问资源nginxlocation ^~ /park/static/ { # 允许两个域名跨域请求 add_header Access-Control-Allow-Origin http://admin.a.com http://data.a.com; add_header Access-Control-Allow-Methods GET,OPTIONS; if ($request_method OPTIONS) { return 204; } # 下面原有代理配置不变 add_header X-Hit-ParkStatic true; proxy_pass http://192.168.120.44:8010/static/; ... }核心不变点无论用哪个域名访问/park/static/xxx代理转发目标 B 服务器地址不变路径替换逻辑不变缓存、2 小时过期配置完全复用不用改动。打开h5以查看