SignalR在Nginx反向代理设置
SignalR在Nginx反向代理前后端分离项目中,需要单独匹配路由。
配置如下
http {
sendfile on;
upstream app_servers {
# 不写http,在转发处写
server x.x.x.x:5050;
}
server {
listen 80;
location /app {
proxy_pass http://app_servers;
proxy_http_version 1.1;
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-Host $server_name;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_cache_bypass $http_upgrade;
}
# SignalR路由
location /app/notifications {
proxy_pass http://app_servers/notifications;
proxy_http_version 1.1;
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-Host $server_name;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_cache_bypass $http_upgrade;
}
}
}
需求注意点:
-
upstream中定义host,如时写了http协议,那么在proxy_pass中就不要再写http,两处写一处,否则重定义报错
-
Nginx路由规则默认是大小写敏感的
= 表示精确匹配 ^~ 表示url以某个常规字符串开头,理解为匹配url路径即可,nginx不对url做编码,因此请求为/static/20%/aa,可以被规则 ^$ /static/ /aa 匹配到 ~ 区分大小写的正则匹配 ~* 不区分大小写的正则匹配 !~ !~* 区分大小写不匹配及不区分大小写不匹配的正则 / 通用匹配,任何请求都会匹配到
Ref
nginx 配置路由不区分大小写-腾讯云开发者社区-腾讯云 (tencent.com)
[nginx详解之语法规则 - 七in秦 - 博客园 (cnblogs.com)](https://www.cnblogs.com/qinyujie/p/8979464.html#:~:text=nginx详解之语法规则 1 1、location [%3D||*|^~] %2Furi%2F { … },5 5、if指令与全局变量 6 6、防盗链 7 7、根据文件类型设置过期时间 8 8、常用变量)