zoukankan      html  css  js  c++  java
  • 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都是一致。

    作者:andon 
    出处:http://www.cnblogs.com/Andon_liu 
  • 相关阅读:
    some tips
    ORA00847: MEMORY_TARGET/MEMORY_MAX_TARGET and LOCK_SGA cannot be set together
    Chapter 01Overview of Oracle 9i Database Perfomrmance Tuning
    Chapter 02Diagnostic and Tuning Tools
    变量与常用符号
    Chapter 18Tuning the Operating System
    标准输入输出
    Trace files
    DBADeveloped Tools
    Chapter 03Database Configuration and IO Issues
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/5357687.html
Copyright © 2011-2022 走看看