首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >nginx配置

nginx配置

原创
作者头像
用户1476826
修改2025-11-26 07:56:50
修改2025-11-26 07:56:50
1330
举报

根据您的要求,我来为您提供一个完整的nginx配置方案,将/tvp路径指向COS上的React静态页面,并支持前端路由。

Nginx配置方案

代码语言:javascript
复制
server {
    listen 80;
    server_name your-domain.com;
    
    # TVP应用 - React静态页面配置
    location /tvp/ {
        # 设置代理到COS存储桶
        proxy_pass https://your-cos-bucket.cos.ap-region.myqcloud.com/;
        
        # 设置正确的HTTP头
        proxy_set_header Host your-cos-bucket.cos.ap-region.myqcloud.com;
        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_valid 200 302 10m;
        proxy_cache_valid 404 1m;
        
        # 支持前端路由 - 对于不存在的路径返回index.html
        error_page 404 =200 /tvp/index.html;
    }
    
    # 处理静态资源
    location /tvp/static/ {
        proxy_pass https://your-cos-bucket.cos.ap-region.myqcloud.com/static/;
        
        # 长期缓存静态资源
        proxy_cache_valid 200 302 1y;
        proxy_cache_valid 404 1m;
        
        # 设置缓存头
        add_header Cache-Control "public, immutable, max-age=31536000";
    }
    
    # 处理前端路由的fallback
    location ~ ^/tvp/(?!static/).* {
        try_files $uri $uri/ @tvp_routing;
    }
    
    location @tvp_routing {
        proxy_pass https://your-cos-bucket.cos.ap-region.myqcloud.com/index.html;
        proxy_set_header Host your-cos-bucket.cos.ap-region.myqcloud.com;
    }
}

替代方案:使用rewrite方式

代码语言:javascript
复制
server {
    listen 80;
    server_name your-domain.com;
    
    location /tvp/ {
        # 重写URL到COS地址
        rewrite ^/tvp/(.*)$ /$1 break;
        
        proxy_pass https://your-cos-bucket.cos.ap-region.myqcloud.com;
        proxy_set_header Host your-cos-bucket.cos.ap-region.myqcloud.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        # 支持前端路由
        proxy_intercept_errors on;
        error_page 404 =200 /tvp/index.html;
    }
}

更简洁的配置(推荐)

代码语言:javascript
复制
server {
    listen 80;
    server_name your-domain.com;
    
    location /tvp/ {
        # 移除/tvp前缀后代理到COS
        rewrite ^/tvp/(.*)$ /$1 break;
        
        proxy_pass https://your-cos-bucket.cos.ap-region.myqcloud.com;
        proxy_set_header Host your-cos-bucket.cos.ap-region.myqcloud.com;
        
        # 处理前端路由
        proxy_intercept_errors on;
        error_page 404 = /tvp/index.html;
    }
    
    # 直接访问/tvp时重定向到/tvp/
    location = /tvp {
        return 302 /tvp/;
    }
}

配置说明

proxy_pass: 将请求代理到COS存储桶地址

  1. proxy_pass: 将请求代理到COS存储桶地址
  2. rewrite: 移除URL中的/tvp前缀,确保COS能正确响应
  3. error_page 404: 处理前端路由,当路径不存在时返回index.html
  4. proxy_set_header: 设置正确的HTTP头信息

前端路由支持原理:

  • React应用使用前端路由时,直接访问子路径会返回404
  • 通过error_page 404配置,将所有不存在的路径重定向到index.html
  • React路由器会解析URL并渲染对应的组件

部署注意事项

  1. COS配置:确保COS存储桶允许公开访问,并正确配置CORS
  2. React构建配置:在package.json中设置"homepage": "/tvp"
  3. 路由配置:如果使用React Router,需要配置basename: <BrowserRouter basename="/tvp">

请根据您的实际COS地址和域名修改配置中的相关参数。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nginx配置方案
  • 替代方案:使用rewrite方式
  • 更简洁的配置(推荐)
  • 配置说明
    • 前端路由支持原理:
    • 部署注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档