Nginx将请求分发到各web应用
介绍了VMWare12虚拟机、Linux(CentOS7)系统安装、部署Nginx1.6.3代理服务做负载均衡。接下来介绍通过Nginx将请求分发到各web应用处理服务。
一、Web应用开发
1、asp.net mvc5开发
(1)新建一个MVC5工程,新建一个Controller,在Index方法实现将当前时间保存到Session["mysession"],并写Cookies["mycookies"]存储主机名和当前时间。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public ActionResult Index() { if (this.HttpContext.Session["mysession"] == null) { this.HttpContext.Session["mysession"] = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); } this.HttpContext.Response.Cookies.Add(new HttpCookie("mycookies") { Expires = DateTime.Now.AddDays(1), Value = HttpContext.Server.MachineName + "||" + DateTime.Now.ToString() }); return View(); } |
(2)在Controller中新增第二个方法GetSession,显示Session和Cookies的值。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public ActionResult GetSession() { if (this.HttpContext.Session["mysession"] != null) { ViewBag.DD = this.HttpContext.Session["mysession"].ToString(); ViewBag.SCode = this.HttpContext.Session["mysession"].GetHashCode().ToString(); ViewBag.SID = this.HttpContext.Session.SessionID; } ViewBag.CVAL = System.Web.HttpContext.Current.Request.Cookies["mycookies"].Value; ViewBag.CID = System.Web.HttpContext.Current.Request.Cookies["mycookies"].Name; ViewBag.CDO = System.Web.HttpContext.Current.Request.Cookies["mycookies"].Domain; return View(); } |
(3)将session和cookies信息在页面显示,GetSession视图代码如下:

@{
ViewBag.Title = "GetSession";
}
<h2>站点:A -- GetSession</h2>
<span>站点:A</span>
<br />
<span>Session Value: @ViewBag.DD</span>
<br/>
<br />
<span>Session SCode: @ViewBag.SCode</span>
<br />
<br />
<span>Session ID: @ViewBag.SID</span>
<br />
<br />
<span>Cookies ID: @ViewBag.CID</span>
<br />
<br />
<span>Cookies Values: @ViewBag.CVAL</span>
<br />
<br />
<span>Cookies Values: @ViewBag.CDO</span>

以上实现session和cookies读写,为了验证负载均衡下,每次请求处理是否保持一致,接下来重要内容,做负载均衡如何如何保持session一致,对于asp.net技术session原理此处不做介绍,网上搜索下大把。
2、Session共享技术
.Net平台对支持几种session存储模式:
(1)InProc 模式
session存储于当前站点在同一个进程内,修改web.config或者bin中文件更新,会导致session丢失。此模式为默认模式。
(2)aspnet state 模式
aspnet state是将session存储在状态服务中,需要启动ASP.NET State Service,能看到进程aspnet_state.exe。还需要在web.config配置此模式。
(3)SQLServer 模式
此模式需要SQL Server配置相关信息,启动代理服务、数据库账号及表,并将web.config指向数据库。
(4)第三方扩展 模式
本框架采用此模式,将session存储到其他存储,比如:Memcached、redis缓存中,达到共享session的目的。可以通过实现ASP.NET中的SessionStateStoreProviderBase这个抽象类扩展。本系统采用将session存储在redis缓存中,通过引入 RedisSessionStateProvider组件。
Install-Package Microsoft.Web.RedisSessionStateProvider
3、Nginx服务状态情况
在centos终端输入命令service nginx status 查看情况,确保服务正常运行。

4、Web站点部署
部署两个站点分别为:
站点A:端口为8081,
站点B:端口为8082,

二、功能效果展现
(1)浏览器访问Index方法,http://192.168.119.128/demo,显示如下:

(2)浏览器访问GetSession方法,http://192.168.119.128/demo/getsession,显示如下:

通过以上验证,获取到的session和cookies都是一致。
出处:http://www.cnblogs.com/Andon_liu
Nginx将请求分发到各web应用的更多相关文章
- nginx实现请求转发
反向代理适用于很多场合,负载均衡是最普遍的用法. nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理. nginx 反向代理官方文档: NGINX REVERSE PROXY 当在 ...
- nginx实现请求的负载均衡 + keepalived实现nginx的高可用
前言 使用集群是网站解决高并发.海量数据问题的常用手段.当一台服务器的处理能力.存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求.这种 ...
- [阿里云部署] Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器
部署地址:123.56.7.181 Ubuntu+Flask+Nginx+uWSGI+Mysql搭建阿里云Web服务器 这个标题就比之前的"ECS服务器配置Web环境的全过程及参考资料&qu ...
- nginx+uWSGI+django+virtualenv+supervisor发布web服务器
nginx+uWSGI+django+virtualenv+supervisor发布web服务器 导论 WSGI是Web服务器网关接口.它是一个规范,描述了Web服务器如何与Web应用程序通信,以 ...
- nginx限制请求之三:Nginx+Lua+Redis 对请求进行限制
相关文章: <高可用服务设计之二:Rate limiting 限流与降级> <nginx限制请求之一:(ngx_http_limit_conn_module)模块> <n ...
- nginx+uwsgi+django+virtualenv+supervisor部署web服务器
wsgi 全称web server gateway interface,wsgi不是服务器,也不是python模块,只是一种协议,描述web server如何和web application通信的规则 ...
- 并发测试 java.lang.OutOfMemoryError: GC overhead limit exceeded Xms Xmx 阻塞请求 单节点 请求分发 负载均衡
at javax.servlet.http.HttpServlet.service(HttpServlet.java:705) at javax.servlet.http.HttpServlet.se ...
- 【Nginx】请求上下文
上下文与全异步web服务器的关系 请求上下文指在一个请求的处理过程中,把一些关键的信息保存下来的类似struct这样的结构体.每个http模块都可以有自己的上下文结构体,一般都是在刚开始处理请求时在内 ...
- Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器
目录 Linux - nginx+uWSGI+django+virtualenv+supervisor发布web服务器 crm django项目部署流程 使用supervisro启动uwsgi,退出虚 ...
随机推荐
- iot 表索引dump《2》
iot表测试: 在create table语句后面使用organization index,就指定数据表创建结构是IOT.但是在不指定主键Primary Key的情况下,是不允许建表的. create ...
- Mac下添加java环境变量
2015年4月22号更新: 发现一个坑:最近发现有同事按照本文方式配置jdk环境变量一直不成功,后来发现他是使用了“Oh-My-Zsh”,配置文件的路径不是/etc/profile或~/.bash_p ...
- HDU 1535 Invitation Cards(SPFA,及其优化)
题意: 有编号1-P的站点, 有Q条公交车路线,公交车路线只从一个起点站直接到达终点站,是单向的,每条路线有它自己的车费. 有P个人早上从1出发,他们要到达每一个公交站点, 然后到了晚上再返回点1. ...
- iOS8指纹识别TouchID
苹果在2014年6月3日的WWDC2014开幕式上推出了新版iOS8系统,界面上iOS8与iOS7相比变化不大,只是在功能方面进行了完好.iOS8通知中心更加强大,支持消息直接回复操作,并支持Quic ...
- 【夯实基础】Spring在ssh中的作用
尊重版权:http://blog.csdn.net/qjlsharp/archive/2009/03/21/4013255.aspx 写的真不错. 在SSH框假中spring充当了管理容器的角色.我们 ...
- 如何理解java回电话
同android中间Button的setOnClickListener这个回调案例: Button button = (Button)this.findViewById(R.id.button); b ...
- Android图片与旋转
拍照后的照片有时被系统旋转,纠正过程例如以下: 1.先读取图片文件被旋转的角度: /** * 通过ExifInterface类读取图片文件的被旋转角度 * @param path : 图片文件的路径 ...
- Otacle表查询
1 查询表结构 语法:desc 表 2 查询全部列 语法:select * from 表名 3 查询指定列 语法:select ...
- Android---两个视图间的淡入淡出
本文译自:http://developer.android.com/training/animation/crossfade.html 淡入淡出动画(也可以作为溶解动画)是指在渐渐的淡出一个UI组件的 ...
- Powershell Mail module, 发送outbox 里的全部邮件(一个.csv文件代表一封邮件)
把creating mail代码写到调用处,往outbox写入 mailxxx.csv文件,入面记录了邮件的主要内容 写入 #template $TMP = IMPORT-CSV "$($d ...