news 2026/6/26 1:56:22

nginx配置公网与内网访问(域名+内网ip)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
nginx配置公网与内网访问(域名+内网ip)

打开h5以查看

主站 Nginx 配置(适配全部静态文件,缓存 2 小时)

核心规则说明

  1. 匹配路径:/static/**全部转发到 B 服务器 IP/static/
  2. 不限文件类型:图片、js、css、字体、视频静态资源全部放行
  3. 浏览器缓存过期:2 小时
  4. Nginx 代理缓存有效期同步 2 小时

一、主站站点配置片段

nginx

server { 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-age=7200"; # 超时控制 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 {}内部加入:

nginx

http { # 其他原有配置... # 静态文件代理缓存目录,提前执行 mkdir -p /var/nginx/cache/static proxy_cache_path /var/nginx/cache/static levels=1:2 keys_zone=static_cache:100m inactive=4h max_size=20g; }

参数解释:

  • keys_zone=static_cache:100m:分配 100M 内存存缓存索引
  • inactive=4h:4 小时没人访问自动清理缓存文件(比 2h 长即可)
  • max_size=20g:缓存磁盘最大占用 20G,可按需调整

三、B 服务器 Nginx 配置(提供全部静态文件)

B 无域名,仅 IP 访问,存放所有 /static 静态资源,限制仅主站可访问:

nginx

server { listen 80; server_name _; root /data/files; # static文件夹放在这个目录下 # 所有静态文件统一缓存2小时 location ~ .* { expires 2h; add_header Cache-Control "public, max-age=7200"; } # 白名单:只允许主站服务器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

四、操作命令

  1. 创建缓存目录

bash

运行

mkdir -p /var/nginx/cache/static chmod 700 /var/nginx/cache/static
  1. 校验配置并重载

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-age=7200等价 7200 秒
  • 不限文件后缀,js/css/png/ttf/mp4 等全部支持
  • 代理缓存 2 小时,2 小时内重复请求不会穿透到 B 服务器,减轻 B 服务器压力

如果是单独域名访问:

场景 1:adata.a.com 和 admin.a.com 共用同一台主站 Nginx(同一个 conf)

只需要在server_name把两个域名都写上,原有/park/static/代理配置完全不用改,自动生效。

nginx

server { 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-age=7200"; 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.txthttp://192.168.120.44:8010/static/aa.txt

场景 2:data.a.com 单独一台 Nginx、独立配置文件

新建一个站点 server 块,复制一模一样的/park/static/代理规则,只改server_name

nginx

server { 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-age=7200"; proxy_connect_timeout 8s; proxy_read_timeout 20s; } # data域名自身业务根目录 location / { root D:/data-project; } }

注意:独立配置文件的http{}块里,依然要保留proxy_cache_path定义static_cache,否则启动报错。

额外:如果需要跨域(前端两个域名互相加载静态文件)

/park/static/内部增加跨域头,允许两个域名访问资源:

nginx

location ^~ /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

  1. 代理转发目标 B 服务器地址不变;
  2. 路径替换逻辑不变;
  3. 缓存、2 小时过期配置完全复用,不用改动。

打开h5以查看

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 1:56:08

AI 接手老项目时,为什么特别适合先走 Skill,而不是直接改代码

老项目是最容易把 AI 用“翻车”的场景之一。 不是因为 AI 完全看不懂老代码,而是因为老项目里往往藏着太多没有显式写出来的东西: 历史兼容 临时补丁 团队约定 已知但未重构的坏味道 数据和接口边界 如果一上来就让 AI 直接改代码,它很可能会把“看起来不合理”的地方顺手…

作者头像 李华
网站建设 2026/6/26 1:56:00

AI 辅助编程的实践方法论:从 Prompt 工程到代码审查的闭环工作流

AI 辅助编程的实践方法论:从 Prompt 工程到代码审查的闭环工作流一、AI 编程工具的真实效率瓶颈 AI 编程工具(Copilot、Cursor、Claude Code 等)已经深入开发者的日常工作,但一个尴尬的现实是:很多人用 AI 写代码的效率…

作者头像 李华
网站建设 2026/6/26 1:54:17

量子物理不可克隆函数(QPUF)技术解析与应用

1. 量子物理不可克隆函数(QPUF)技术解析量子物理不可克隆函数(Quantum Physical Unclonable Functions, QPUF)是硬件安全领域的一项革命性技术,它利用量子系统的固有特性来实现设备认证和安全密钥生成。与传统的物理不可克隆函数(PUF)相比,QPUF具有更强大…

作者头像 李华
网站建设 2026/6/26 1:53:18

AI 系统可观测性:从 Token 用量追踪到模型推理延迟的全链路监控

AI 系统可观测性:从 Token 用量追踪到模型推理延迟的全链路监控 一、AI 服务的监控盲区:当传统 APM 无法覆盖模型层 传统微服务的监控体系围绕 HTTP 请求延迟、错误率、吞吐量三个黄金指标构建。但 AI 服务引入了新的可观测性维度:Token 消耗…

作者头像 李华
网站建设 2026/6/26 1:52:39

宝丽金技术科技平台的减损措施与解决方案。

2026年6月,曾经以高回报线上金属产业投资为卖点的宝丽金技术科技平台突然停止运营,用户无法提现。随后,平台发布“保本减损措施”公告,要求投资者向负责清算处置的资管机构提交转账截图及相关资金凭证,申办本金核定减损…

作者头像 李华
网站建设 2026/6/26 1:52:30

从树到凯瑟琳轮:LQG与半拉链构造随机几何曲面

1. 从“树”到“轮”:一个几何构造的直观动机最近在几何与随机过程的交叉领域,一个名为“凯瑟琳轮”的构造引起了我的注意。这个听起来颇具诗意的名字,背后连接的是LQG、测地线、半拉链和短毛性质这几个硬核概念。乍看之下,这些术…

作者头像 李华