利用Nginx做负载均衡
这是80端口被占用的缘故,修改下端口即可。
文件conf/nginx.conf
server {
listen 8888;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
在浏览器中输入127.0.0.1:8888看到下面页面即说明成功。
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer tonginx.org.
Commercial support is available atnginx.com.
Thank you for using nginx.
最近正在研究Nginx,Nginx作为反向代理服务器,可以对Web服务器提供加速,并且具有负载均衡的功能。
首先我要在官网下载Nginx(http://nginx.org/en/download.html),目前最新稳定的版本为1.0版本,Linux和Windows版本我都下下来了,在两台服务器上做网站负载均衡。
在Windows版本中,将压缩包进行解压,执行命令:
1
|
start nginx
|
这样就可以启动nginx服务了。而执行命令:
1
|
nginx -s stop
|
可以停止服务。
这是我在192.168.3.82的IIS服务器上,添加两个站点:
这两个站点分别添加两个文件index.html,两个文件内容分别显示:“这是站点1”,“这是站点2”。
nginx 的 upstream默认是以轮询的方式实现负载均衡,这种方式中,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
另外一种方式是ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
负载均衡配置示例:
upstream backend {
#ip_hash;
server 192.168.1.251;
server 192.168.1.252;
server 192.168.1.247;
}
在nginx.conf的配置文件调整相关配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
upstream site {
server 192.168.3.82:8040;
server 192.168.3.82:8041;
}
server {
listen 8080;
server_name 192.168.3.82;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http:
//site
;
}
|
1
|
|
接着在运行一次start nginx,当你不断刷新页面的时候,浏览器上就会来回切换这两个站点。
可以发现这里切换是按照1:1的方式来回切换,通过配置文件你可以站点的权重:
1
2
3
4
|
upstream site {
server 192.168.3.82:8040 weight=2;
server 192.168.3.82:8041 weight=1;
}
|
在Linux中,安装Nginx比较麻烦一些,因为需附加安装一些包,如gzip,pcre等等。具体可以查看:http://www.cnblogs.com/yuanermen/archive/2011/03/31/2000993.html
可以在Linux上部署你的站点,比如站点3,如果你要把Windows服务器作为反向代理服务器,那么在upstream site添加一个新的站点:
1
2
3
4
5
|
upstream site {
server 192.168.3.82:8040 weight=2;
server 192.168.3.82:8041 weight=1;
server 192.168.3.90:8080;
}
|
你还可以利用Nginx对反向代理服务器上对静态文件(如JPG,GIF,CSS,JS等等)进行缓存,这样当你需要从Web服务器去请求静态资源的时候,可以直接从反向代理服务器上取得本地的一个资源,这样减少了对Web服务器的压力。具体可以查看: http://www.cnblogs.com/daizhj/archive/2009/11/03/1595292.html