nginx部署之后已经配置代理但是接口报错403

之前看别人的博客,讲解已经很清楚了

https://zhuanlan.zhihu.com/p/524926928

https://zhuanlan.zhihu.com/p/165474111

部署其实也不难,修改对应的配置文件,然后重新启动nginx文件就好了,主要遇到的问题还是代理的问题
这里接口报错403
这个哥们儿跟我遇到的几乎一摸一样

https://www.cnblogs.com/heisongshatu/p/15190701.html

解决办法:

    location ~/(auth|api|operate|manage|chbn)/ {
        proxy_pass http://************:8301;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_set_header   Host              $http_host;
        proxy_set_header   X-Real-IP         $remote_addr;
    }

这里在代理之后增加了一部分内容

在这里插入图片描述

相关知识点

https://blog.csdn.net/weixin_41585557/article/details/82426784

https://blog.csdn.net/qq_41536539/article/details/99486071

在使用 Nginx 部署 Vue3 项目并集成 SignalR 时,如果出现报错,通常与 WebSocket 连接、设置或反向代理配置有关。SignalR 依赖于 WebSocket 或其他长轮询机制来维持客户端与服务器的实时通信,而 Nginx 在作为反向代理时,若未正确配置相关头信息,可能导致连接失败。 以下是一些常见的解决方案和配置建议: ### 配置 Nginx 支持 WebSocket 代理 SignalR 使用 WebSocket 协议进行实时通信,因此需要在 Nginx 中启用 WebSocket 代理。添加以下配置以确保 Upgrade 和 Connection 头被正确传递: ```nginx location /api/signalr/ { proxy_pass http://backend_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } ``` 该配置确保了 Nginx 能够正确地将 WebSocket 请求代理到后端服务器,避免因协议切换失败导致的连接中断[^1]。 ### 处理问题(CORS) 在 Vue3 前端应用中使用 SignalR 时,如果前端与后端不在同一个名下,可能会遇到问题。可以在后端服务中配置 CORS 策略,允许特定来源的请求,或在 Nginx 中添加以下头信息以放宽限制: ```nginx location /api/signalr/ { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; proxy_pass http://backend_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } ``` ### 检查 SignalR 客户端连接路径 确保前端代码中 SignalR 客户端连接的路径与后端服务暴露的路径一致。例如: ```javascript import { HubConnectionBuilder } from '@microsoft/signalr'; const connection = new HubConnectionBuilder() .withUrl("http://your-nginx-server/api/signalr/chatHub") .build(); ``` 如果路径不正确,Nginx 可能无法将请求正确路由到后端 SignalR Hub,导致连接失败[^1]。 ### 启用 Nginx 日志排查问题 启用 Nginx访问日志和错误日志可以帮助定位请求失败的原因: ```nginx location /api/signalr/ { access_log /var/log/nginx/signalr_access.log; error_log /var/log/nginx/signalr_error.log; proxy_pass http://backend_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; } ``` 查看日志文件可以更直观地了解请求是否到达 Nginx,以及是否被正确代理到后端服务。 ### 示例完整 Nginx 配置 ```nginx server { listen 80; server_name yourdomain.com; location / { root /path/to/vue3/dist; try_files $uri $uri/ /index.html; } location /api/signalr/ { proxy_pass http://backend_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range'; access_log /var/log/nginx/signalr_access.log; error_log /var/log/nginx/signalr_error.log; } } ``` ### 常见错误排查 - **WebSocket handshake: 'Upgrade' header is missing**:确认是否设置了 `proxy_set_header Upgrade $http_upgrade` 和 `proxy_set_header Connection "upgrade"`。 - **404 Not Found**:检查后端 SignalR Hub 的路径是否与客户端连接路径一致。 - **CORS 错误**:确保后端或 Nginx 配置了正确的 CORS 策略。 - **502 Bad Gateway**:检查后端服务是否正常运行,Nginx 是否能访问到后端服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值