Nginx+SignalR+Redis(二)windows

接上篇:此篇主要讲解signalr使用nginx后遇到的问题。

首先发布signalr服务端多个站点,为了简单只发布了两个站点类似:一个服务端端口8090一个8091

然后配置Nginx具体安装下载就不一一介绍,可以自行百度安装。现在只介绍配置nginx.config中的项,因为在此遇到了许多坑

先将ngixn.con中的代码贴出来。

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

map $http_upgrade $connection_upgrade {
default upgrade;
‘‘ close;
}
upstream signalr{
ip_hash;
server localhost:8090;
server localhost:8091;
}

server {
listen 8081;
server_name localhost;

location / {
charset utf-8;
proxy_http_version 1.1;
proxy_pass http://signalr;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 3600s;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
}

是不是很简单,但是踩了许多坑。

坑一,congnectionId:后面乱码的问题。需要在nginx中的locahost中添加编码格式charset utf-8;

坑二,POST请求了,返回400400的意是思请求异常。肯定是这个配置有问题额。

不要讲nginx中的proxy_set_header Connection "upgrade";写死。使用配置

map $http_upgrade $connection_upgrade {
default upgrade;
‘‘ close;
}和proxy_set_header Connection $connection_upgrade;解决即可

重要代码

proxy_http_version 1.1;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection $connection_upgrade;

具体配置不一一介绍,百度即可。

坑三,无效的connectionid是因为nginx反向代理将回话分发到另一个端口上的原因,使用SignalR时,要进行会话保持,请求要一直落到同一台服务器上。

因此nginx中要配置回话保持因此使用的是ip_hash

当然好有许多其他的方案。

原文地址:https://www.cnblogs.com/chuizilong/p/10347324.html

时间: 2024-10-16 10:12:24

Nginx+SignalR+Redis(二)windows的相关文章

.Net 站点在Windows环境借助Nginx和Redis实现负载均衡系列导航栏

.Net 站点在Windows环境借助Nginx和Redis实现负载均衡系列(一) .Net 站点在Windows环境借助Nginx和Redis实现负载均衡系列(二) .Net 站点在Windows环境借助Nginx和Redis实现负载均衡系列(三) .Net 站点在Windows环境借助Nginx和Redis实现负载均衡系列(四)

windows+nginx+iis+redis+Task.MainForm构建分布式架构 之 (nginx+iis构建服务集群)

本次要分享的是利用windows+nginx+iis+redis+Task.MainForm组建分布式架构,由标题就能看出此内容不是一篇分享文章能说完的,所以我打算分几篇分享文章来讲解,一步一步实现分布式架构:下面将先给出整个架构的核心节点简介,希望各位多多点赞: . 架构设计图展示 . nginx+iis构建服务集群 . redis存储分布式共享的session及共享session运作流程 . redis主从配置及Sentinel管理多个Redis集群 . 定时框架Task.MainForm提

.Net 站点在Windows环境借助Nginx和Redis实现负载均衡系列(一)

说明 1.首先说明一下实现负载均衡的过程. 第一步:新建两个或多个站点(建站过程略). 第二步:两个或多个站点之间实现Session的共享. 第三步:多个站点通过负载均衡器实现负载均衡. 2.博客内容主线 1.Redis的安装. 2..Net通过Redis实现多个站点Session共享的过程. 3.Nginx的安装和配置实现负载均衡. 4.使用Fiddler模仿域名,测试负载均衡是否成功实现. 前言 1.站点之间的Session共享使用Redis来实现 2.负载均衡使用Nginx来实现 以下是关

nginx+lua+redis(openresty)配置

nginx+lua+redis(openresty)配置 2014-07-18 11:10 2494人阅读 评论(1) 收藏 举报 方案一: 1.安装lua解释器 wget http://luajit.org/download/LuaJIT-2.0.2.tar.gz (http://luajit.org/download.html) 配置lua Lib和include/luajit-$version目录为环境变量 2.下载ngx_devel_kit和lua-nginx-module https:

nginx+lua+redis构建高并发应用(转)

nginx+lua+redis构建高并发应用 ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求. url请求nginx服务器,然后lua查询redis,返回json数据. 备注:centos或者redhat系统请跳转到nginx + ngx_lua安装测试 一.安装lua 1 2 3 # apt-get install lua5.1 # apt-get install liblua5.1-dev # apt-get install liblua5.

Nginx+Lua+Redis 对请求进行限制

Nginx+Lua+Redis 对请求进行限制 一.概述 需求:所有访问/myapi/**的请求必须是POST请求,而且根据请求参数过滤不符合规则的非法请求(黑名单), 这些请求一律不转发到后端服务器(Tomcat) 实现思路:通过在Nginx上进行访问限制,通过Lua来灵活实现业务需求,而Redis用于存储黑名单列表. 相关nginx上lua或redis的使用方式可以参考我之前写的一篇文章: openresty(nginx).lua.drizzle调研 http://www.cnblogs.c

nginx之 nginx + tomcat + redis 负载均衡且session一致性

说明: 本文描述的是 nginx + tomcat + redis 实现应用负载均衡且满足session一致性,从安装到配置的全部过程,供大家学习!nginx 代理服务器ip: 10.219.24.26tomcat_1 应用服务器ip与端口: 10.219.24.21:8080 tomcat_2 应用服务器ip与端口: 10.219.24.21:8081redis 缓存服务器ip: 10.219.24.23 一. nginx-1.9.7 编译安装 下载地址: http://nginx.org/d

redis缓存服务器(Nginx+Tomcat+redis+MySQL实现session会话共享)

一.redis介绍 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现master-slave(主从)同步. Redis是一个高性能的key-valu

[傻瓜版] Redis在Windows下的开发环境配置步骤

redis默认运行在unix体系下,windows无法直接运行官方版.以下是几种解决方案, 一)Windows移植版.启动速度飞快,优先推荐使用. a) 2.6.12 是稳定版,我用来64位版做开发环境,数个月未发现重要问题.  下载地址: https://github.com/MSOpenTech/redis/tree/2.6/bin/release b) 2.8.4 是3月24发布的最新版,此版本运行时会临时占用内存大小的硬盘空间,下载地址: https://github.com/MSOpe