Nginx + IIS 配置,实现负载均衡
当你的Web应用程序访问量大的时候,一台服务器可能会因为压力过大而无法处理所有的请求。此时,可以增加服务器,采用负载均衡来分担所有的请求。关于Nginx的作用,自行百度了解。总之,在Windows平台下,你可以用它和IIS来实现你的Web应用程序的负载均衡。简单说,就是它会根据几台服务器的空闲程度,将接收到的Web请求分发到相应的服务器进行处理(当然它会选择比较空闲的服务器来处理当前的请求,否则用它有什么意义呢)。接下来,采用两台虚拟机,创建简单的ASP.Net应用程序,使用Nginx+IIS实现负载均衡。
一、环境
Client: Win7 X64, Visual Studio2010, IP:59.78.184.11
Server1: 虚拟机Win7 X64, IIS,Nginx IP:59.78.184.151 开放端口80(Nginx)、8080(IISweb)
Server2:虚拟机Win7 X64, IIS, IP:59.78.184.136 开放端口80(IISWeb)
二、创建ASP.Net应用程序,并发布至两台Server上
VS中创建ASP.Net应用程序,为了测试负载均衡效果,我们只在应用程序中获取当前处理Web请求的Server名。在项目中的Default.aspx.cs文件中写如下代码,Default.aspx页面中放置一个Label控件。
protected void Page_Load(object sender, EventArgs e)
{
HostNameLbl.Text = "UserHostName:" + Request.UserHostName.ToString() + "<br/>UserHostAddress:" + Request.UserHostAddress.ToString()
+ "<br/>Url.Host:" + Request.Url.Host.ToString() + "<br/>Server:" + Server.MachineName.ToString(); ;
}
接着,生成项目,将项目发布至已经准备好的两台Server中。在Server1的IIS上,创建站点,将路径指向该项目,并将8080端口分配给该站点。(注意,默认站点的端口为80,因为Server1一会需要将80端口给Nginx,所以我们重新给站点一个端口)。防火墙上将8080端口打开。同样的步骤,在Server2上再走一遍(Server2上直接将80端口给新建的站点就可以了)。
三、安装Nginx并进行配置
去官网上下载一个Nginx,在Server1的C盘中解压。找到conf文件夹,打开里面的nginx.conf文件。找到http块,往下需要配置的地方:
- upstream localhost块,将需要监听的两台服务器IP地址配上去
- server块。Nginx监听本地端口配置上
- location块。
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream localhost{
server 59.78.184.151:8080;
server 59.78.184.136:80;
}
server {
listen 80;
server_name 59.78.184.151;
#charset koi8-r;
#access_log logs/host.access.log main;
#location / {
# root html;
# index index.html index.htm;
#}
#my own location
location / {
proxy_pass http://localhost;
proxy_redirect default;
}
接着启动nginx。
启动:打开cmd,进入Nginx目录,输入nginx.exe回车。此时查看任务管理器中,有两个nginx进程即启动成功。
关闭:打开cmd,进入Nginx目录,输入nginx.exe –s stop回车,即可关闭nginx。如果在此你修改了配置文件,导致nginx无法关闭。cmd上会提示配置文件的哪一行出错,可以追踪到该行去进行相应的修改。
在浏览器中访问我们的应用程序。注意观察Server的值是WIN-KKRTSU3Q756

刷新浏览器,再次查看结果,如下:此时的Server编程了WIN-VM3BU2IPGM4。然而对于用户来说,我并没有察觉到,访问的依旧是Server1的地址。

Nginx + IIS 配置,实现负载均衡的更多相关文章
- 使用nginx+docker配置https负载均衡
了解Docker Docker是一个golang编写的开源轻量级的.可移植的.自给自足的容器,Docker主要应用在以下场景: web应用的自动化打包和发布: 自动化测试和持续集成.发布: 在服务型环 ...
- Nginx做NodeJS应用负载均衡配置实例
这篇文章主要介绍了Nginx做NodeJS应用负载均衡配置实例,本文直接给出配置实例,需要的朋友可以参考下. 负载均衡可以把用户的请求分摊到多个服务器上进行处理,从而实现了对海量用户的访问支持.负载均 ...
- Nginx 部署、反向代理配置、负载均衡
Nginx 部署.反向代理配置.负载均衡 最近我们的angular项目部署,我们采用的的是Nginx,下面对Nginx做一个简单的介绍. 为什么选择Nginx 轻:相比于Apache,同样的web服务 ...
- Linux 笔记 - 第二十章 配置 Nginx 反向代理和负载均衡
一.简介 由于 Nginx 的反向代理和负载均衡功能经常被提及,所以将这两个功能单独提出来进行讲解. Nginx 其实仅仅是作为 Nginx Proxy 反向代理使用的,因为这个反向代理功能表现的效果 ...
- 初识Nginx,简单配置实现负载均衡(ubuntu + Nginx + tomcat)
工作需要,研究了一下Nginx的反向代理实现负载均衡,网上搜了一下教程,大多含糊不清,所以写下这个,权当总结,方便日后查看,如果能恰好帮到一些需要的人,那就更好了 先说需求,域名指向搭建了Nginx的 ...
- Nginx配置及负载均衡
转载:http://www.cnblogs.com/jingmoxukong/p/5945200.html nginx简易教程 目录 Nginx 概述 安装与使用 nginx 配置实战 参 ...
- Nginx反向代理实现负载均衡配置图解
Nginx反向代理实现负载均衡配置图解 [导读] 负载均衡配置是超大型机器需要考虑的一些问题,同时也是数据安全的一种做法,下面我来介绍在nginx中反向代理 负载均衡配置图解,大家可参考本文章来操作. ...
- Nginx代理功能与负载均衡详解
序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx代理服务的 ...
- Nginx 反向代理与负载均衡详解
序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在Nginx 配置详解中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Ngin ...
- nginx反向代理与负载均衡讲解
Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx代理服务的配置说 ...
随机推荐
- Service组件 总结 + 绑定理Service三种实现方式 Messager + Binder + AIDL
在Android中进程按优先级可以分为五类,优先级从高到低排列: - 前台进程 该进程包含正在与用户进行交互的界面组件,比如一个Activity - 可视进程 该进程中的组件虽然没有和用户交互,但是仍 ...
- CF 460C Present 【DP+】主意
给你n高树花.m日,每天连续浇筑w鲜花.一天一次,花长1高度单位 求m天后.最矮的花最高是多少 最大最小问题能够用二分来解 首先我们能够得到全部花的最矮高度即答案的下界,给这个花浇m天即是答案的上界 ...
- poj3176--Cow Bowling(dp:数塔问题)
Cow Bowling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14028 Accepted: 9302 Desc ...
- Nagios+pnp4nagios+rrdtool 安装配置为nagios添加自定义插件(三)
nagios博大精深,可以以shell.perl等语句为nagios写插件,来满足自己监控的需要.本文写mysql中tps.qps的插件,并把收集到的结果以图形形式展现出来,这样输出的结果就有一定的要 ...
- 分布式Unique ID的生成方法
分布式Unique ID的生成方法 分布式的Unique ID的用途如此广泛,从业务对象Id到日志的TraceId,本文总结了林林总总的各种生成算法. 1. 发号器 我接触的最早的Unique ID, ...
- java注解(一)
虽然平时有使用注解,不过没有深入了解,今天无聊,重新从基础深入了解整理下: java注解是附加在代码中的一些元信息,用于一些工具在编译.运行时进行解析和使用,起到说明.配置的功能. 注解不会也 ...
- Galaxy (hdu 5073 数学)
Galaxy Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total S ...
- 【原创】shadowebdict开发日记:基于linux的简明英汉字典(一)
全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdic ...
- 探索Android该Parcel机制(上)
一.先从Serialize说起 我们都知道JAVA中的Serialize机制,译成串行化.序列化……,其作用是能将数据对象存入字节流其中,在须要时又一次生成对象. 主要应用是利用外部存储设备保存对象状 ...
- Silverlight的Socket通信
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPwAAAGwCAIAAAACJJ+TAAAgAElEQVR4nO2deXgT5534Rdhskme7+9