全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Nginx+IIS简单的部署教程

随着互联网项目用户访问量不断上升,单点web服务器是无法满足大型高并发高负载的业务处理的,为了给web服务器做负载均衡方案,打算采用Nginx搭建负载均衡服务器,把用户请求分配到N个服务器来缓解服务器压力。

Nginx简介:

Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器 。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的Rambler.ru 站点开发的,它已经在该站点运行超过四年多了。Igor 将源代码以类BSD许可证的形式发布。自Nginx 发布四年来,Nginx 已经因为它的稳定性、丰富的功能集、 示例配置文件和低系统资源的消耗而闻名了。目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了Nginx,如六房间、酷6等。 新近发现Nginx 技术在国内日趋火热,越来越多的网站开始部署Nginx。这边都是网上说的。

nginx安装

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、新浪、网易、腾讯等。

最新版本的nginx版本为1.9.3,我这下载的是window版本的,一般实际场景都是安装在linux系统下的,由于linux系统目前正在摸索中这里就不介绍。官方下载地址:nginx-1.9.3.zip。下载完成之后解压运行nginx.exe就启动了nginx了,启动后会在进程里面看到nginx。

要实现负载均衡需要修改conf/nginx.conf的配置信息,修改配置信息之后重新启动nginx服务,可以通过nginx -s reload指令实现。这里我们使用Ants提供的一个批处理来操作。

将nginx.bat文件放到nginx.exe相同文件夹下,直接运行就行了。文章结尾会提供本文用到的所有文件。

站点搭建及配置

1.搭建两个iis站点

站点下只有一个简单的index页面,用来输出当前服务器信息。由于我没有两台机器,所以将两个站点都部署到本机了,分别绑定了8082和9000两个端口。

protected void Page_Load(object sender, EventArgs e)
  {
   Label0.Text = "请求开始时间:"+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
   Label1.Text = "服务器名称:" + Server.MachineName;//服务器名称 
   Label2.Text = "服务器IP地址:" + Request.ServerVariables["LOCAL_ADDR"];//服务器IP地址 
   Label3.Text = "HTTP访问端口:" + Request.ServerVariables["SERVER_PORT"];//HTTP访问端口"
   Label4.Text = ".NET解释引擎版本:" + ".NET CLR" + Environment.Version.Major + "." + Environment.Version.Minor + "." + Environment.Version.Build + "." + Environment.Version.Revision;//.NET解释引擎版本 
   Label5.Text = "服务器操作系统版本:" + Environment.OSVersion.ToString();//服务器操作系统版本 
   Label6.Text = "服务器IIS版本:" + Request.ServerVariables["SERVER_SOFTWARE"];//服务器IIS版本 
   Label7.Text = "服务器域名:" + Request.ServerVariables["SERVER_NAME"];//服务器域名 
   Label8.Text = "虚拟目录的绝对路径:" + Request.ServerVariables["APPL_RHYSICAL_PATH"];//虚拟目录的绝对路径 
   Label9.Text = "执行文件的绝对路径:" + Request.ServerVariables["PATH_TRANSLATED"];//执行文件的绝对路径 
   Label10.Text = "虚拟目录Session总数:" + Session.Contents.Count.ToString();//虚拟目录Session总数 
   Label11.Text = "虚拟目录Application总数:" + Application.Contents.Count.ToString();//虚拟目录Application总数 
   Label12.Text = "域名主机:" + Request.ServerVariables["HTTP_HOST"];//域名主机 
   Label13.Text = "服务器区域语言:" + Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"];//服务器区域语言 
   Label14.Text = "用户信息:" + Request.ServerVariables["HTTP_USER_AGENT"];
   Label14.Text = "CPU个数:" + Environment.GetEnvironmentVariable("NUMBER_OF_PROCESSORS");//CPU个数 
   Label15.Text = "CPU类型:" + Environment.GetEnvironmentVariable("PROCESSOR_IDENTIFIER");//CPU类型 
   Label16.Text = "请求来源地址:" + Request.Headers["X-Real-IP"];
  }

2.修改nginx配置信息

修改nginx监听端口,修改http server下的listen节点值,由于本机80端口已经被占用,我改为监听8083端口。

listen 8083;

在http节点下添加upstream(服务器集群),server设置的是集群服务器的信息,我这里搭建了两个站点,配置了两条信息。

#服务器集群名称为Jq_one
upstream Jq_one {
  server 127.0.0.1:9000;
  server 127.0.0.1:8082;
}

在http节点下找到location节点修改

location / {
root html;
index index.aspx index.html index.htm; #修改主页为index.aspx
#其中jq_one对应着upstream设置的集群名称
proxy_pass http://Jq_one;
#设置主机头和客户端真实地址,以便服务器获取客户端真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

修改完成配置文件以后记得重启nginx服务,最终完整配置文件信息如下

3.运行结果

访问http://127.0.0.1:8083/index.aspx ,多访问几次,着重关注标红部分。

可以看到,我们的请求被分发到了8082站点和9000站点,并且第一次是8082站点第二次9000。出现这样的结果证明我们负载均衡搭建成功了。尝试关闭其中的9000站点,然后刷新页面发现输出的http端口一直是8082,也就是说其中一个站点挂了,只要还有一个站点是好的,我们的还是可以服务。

问题分析

虽然我们搭建好了负载均衡站点,但是还存在以下问题。

1.如果站点使用了session,请求平均分配到两个站点,那么必然存在session共享问题,该如何解决?

使用数据库保存session信息使用nginx将同一ip的请求分配到固定服务器,修改如下。ip_hash会计算ip对应hash值,然后分配到固定服务器

upstream Jq_one{
  server 127.0.0.1:8082 ;
   server 127.0.0.1:9000 ;
  ip_hash;
  }

搭建一台Redis服务器,对session的读取都从该Redis服务器上读取。后面的文章将介绍分布式缓存Redis的使用

2.管理员更新站点文件,该怎么操作,现在还只有两台服务器,可以手工将文件更新到两台服务器,如果是10台呢,那么手工操作必然是不可行的

多服务器站点更新可以使用GoodSync 文件同步程序,会自动检测文件的修改新增,然后同步到其它服务器上。在linux下可以使用rsync

3.站点中的文件上传功能会将文件分配到不同的服务器,文件共享问题如何解决。

使用文件服务器将所有文件存储到该服务器上,文件操作读取写入都在该服务器上。这里同样会存在一个问题,文件服务器存在读写上限。

4.负载的服务器配置不一样,有的高有的低可不可以让配置高的服务器处理请求多一些

这里讲一下,负载均衡有好几种算法 轮转法,散列法,最少连接法,最低缺失法,最快响应法,加权法。我们这里可以使用加权法来分配请求。

upstream Jq_one{
  server 127.0.0.1:8082 weight=4;
   server 127.0.0.1:9000 weight=1;
  }

通过weight设置每台服务器分配请求站的权重,值越高分配的越多。

5.由于请求是经过nginx转发过来的,可以在代码里面获取到用户请求的实际ip地址吗?

答案是肯定的,在localtion节点设置如下请求头信息

#设置主机头和客户端真实地址,以便服务器获取客户端真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

代码里面通过Request.Headers["X-Real-IP"],就能获取到真实ip

以上代码来自:nginx+iis实现简单的负载均衡

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Nginx  # IIS  # iis+nginx实现负载均衡的详细步骤  # iis、apache、nginx使用X-Frame-Options防止网页被Frame的解决方法  # Windows安装nginx1.10.1反向代理访问IIS网站  # 采用软件负载均衡器实现web服务器集群(iis+nginx)  # nginx+iis实现简单的负载均衡  # nginx、Apache、IIS服务器解决 413 Request Entity Too Large  # IIS、Apache、Nginx下用IE下载apk文件变成zip的解决办法  # 让iis记录nginx反向代理的真实ip  # Nginx反向代理+DNS轮询+IIS7.5 千万PV 百万IP 双线 网站架构案例  # iis、apache与nginx禁止目录执行asp、php脚本的实现方法  # 负载均衡  # 可以使用  # 的是  # 都是  # 客户端  # 器上  # 两台  # 配置文件  # 腾讯  # 俄罗斯  # 四年  # 网易  # 俄文  # 本机  # 单点  # 代理服务器  # 新浪  # 俄国  # 是一个  # 执行文件 


相关文章: 免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?  已有域名如何快速搭建专属网站?  建站之星各版本价格是多少?  小建面朝正北,A点实际方位是否存在偏差?  家具网站制作软件,家具厂怎么跑业务?  5种Android数据存储方式汇总  网站网页制作专业公司,怎样制作自己的网页?  用v-html解决Vue.js渲染中html标签不被解析的问题  PHP 500报错的快速解决方法  清除minerd进程的简单方法  Java解压缩zip - 解压缩多个文件或文件夹实例  如何在阿里云虚拟服务器快速搭建网站?  名字制作网站免费,所有小说网站的名字?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何批量查询域名的建站时间记录?  建站之星在线客服如何快速接入解答?  如何快速上传自定义模板至建站之星?  建站主机是什么?如何选择适合的建站主机?  C++时间戳转换成日期时间的步骤和示例代码  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  常州自助建站工具推荐:低成本搭建与模板选择技巧  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  如何做网站制作流程,*游戏网站怎么搭建?  常州自助建站费用包含哪些项目?  小型网站制作HTML,*游戏网站怎么搭建?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  如何通过宝塔面板实现本地网站访问?  建站之星安装需要哪些步骤及注意事项?  建站之星价格显示格式升级,你的预算足够吗?  专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  建站之星伪静态规则如何设置?  股票网站制作软件,网上股票怎么开户?  如何用花生壳三步快速搭建专属网站?  如何在Ubuntu系统下快速搭建WordPress个人网站?  青岛网站建设如何选择本地服务器?  微信h5制作网站有哪些,免费微信H5页面制作工具?  如何快速上传建站程序避免常见错误?  建站主机选择指南:服务器配置与SEO优化实战技巧  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  制作证书网站有哪些,全国城建培训中心证书查询官网?  C#如何序列化对象为XML XmlSerializer用法  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  建站主机服务器选购指南:轻量应用与VPS配置解析  魔方云NAT建站如何实现端口转发? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。