根据您的要求,我来为您提供一个完整的nginx配置方案,将/tvp路径指向COS上的React静态页面,并支持前端路由。
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;
}
}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;
}
}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存储桶地址
COS存储桶地址
/tvp前缀,确保COS能正确响应
error_page 404配置,将所有不存在的路径重定向到index.html
package.json中设置"homepage": "/tvp"
请根据您的实际COS地址和域名修改配置中的相关参数。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。