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、常用变量)

posted @ 2024-01-25 10:41  MangoJuice  阅读(8)  评论(0编辑  收藏  举报