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的地址。
最新文章
- mysql登陆问题
- html4,xhtml,html5发展历史
- 注意linux下面的命令行,要将PATH声明出来
- Editor扩展之查看Prefab用在那儿
- poj2451Uyuw&#39;s Concert(半平面交)
- 算法篇——Cantor的数表
- android架构介绍
- MySQL(2):SQL语言的分类
- jQuery自定义多选下拉框
- 【dp】 poj 1157
- 集群环境下JSP中获取客户端IP地址的方法
- Linux学习笔记(三)
- windows_agent 添加
- [No000015A]SQL语句分类
- VIM 如何使用系统的剪切板
- mysql中Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password:YES)错误
- BNU4204:动物PK
- 【ACM】求高精度幂
- 关于nginx访问 静态文件 403 的错误
- Linux内核——内存管理
热门文章
- auto property synthesis will not synthesize proterty ;it will be implementedby its superclass, use @
- .NET开源 FAQ
- Windows phone 8 学习笔记(3) 通信
- MYSQL中取当前年份的第一天和当前周,月,季度的第一天/最后一天
- FZU2082
- 大页(huge pages) 三大系列 ---计算大页配置参数
- struts2原理分析
- 我的学习笔记_Windows_HOOK计划 2009-12-03 11:19
- android面试题 不单单为了面试也是一次非常好的学习
- FPGA开机状态