首页 > 代码库 > nginx 反向代理和服务器组状态
nginx 反向代理和服务器组状态
实现NGINX的代理(七层负载均衡);
拓扑图:
web01 web02
|192.168.1.20 |192.168.1.21
-----------------------------
|192.168.1.254
nginx(反向代理);
|1.1.1.254
|
client(1.1.1.1);
要求:client1.1.1.1 可以通过反向代理1.1.1.254 访问到内网的两台web服务;web01 性能比较好,权值为二;
**由于是资源有限,用IP虚拟主机实现两台web;(web服务器apache);
实现过程:
1.首先配置出两台web服务器;
[root@localhost local]# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:07:6D:A0
inet addr:192.168.1.20 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe07:6da0/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:30 errors:0 dropped:0 overruns:0 frame:0
TX packets:31 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4318 (4.2 KiB) TX bytes:5539 (5.4 KiB)
eth0:1 Link encap:Ethernet HWaddr 00:0C:29:07:6D:A0
inet addr:192.168.1.21 Bcast:192.168.255.247 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
配置虚拟主机:
[root@localhost conf.d]# vim VirtualHost.conf
<VirtualHost 192.168.1.20:80>
DocumentRoot /www
ServerName www.bxn.com
CustomLog logs/www20-access_log common
</VirtualHost>
<VirtualHost 192.168.1.21:80>
DocumentRoot /bbs
ServerName bbs.bxn.com
CustomLog logs/bbs21-access_log common
</VirtualHost>
[root@localhost bbs]# /etc/init.d/httpd restart
[root@localhost bbs]# elinks --dump 192.168.1.20
192.168.1.20:www
[root@localhost bbs]# elinks --dump 192.168.1.21
192.168.1.21:bbs
web服务配置完毕;
2.配置反向代理:
安装NGINX过程:源码安装:简略写;
groupadd nginx
useradd -M -g nginx nginx
yum install -y pcre pcre-devel
yum install -y openssl openssl-devel
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
反向代理配置:
[root@squid nginx]# cd /usr/local/nginx/conf/
[root@squid conf]# grep -v ‘#\|^$‘ nginx.conf >nginx2.conf
[root@squid conf]# vim nginx2.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream webgrp {
server 192.168.1.20 weight=2;
server 192.168.1.10 weight=1;
}
//upstream 是关键;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://webgrp//还有这;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
[root@squid sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx2.conf
[root@squid conf]# netstat -tulnp |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2590/nginx
3.在client 1.1.1.1 测试;
elinks 1.1.1.254[root@localhost ~]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:19:1B:0D
inet addr:1.1.1.1 Bcast:1.1.1.255 Mask:255.255.255.0
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.21:bbs
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.21:bbs
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
在client可以看到已经测试成功;
*知识点:
服务器组的连接状态: 决定连接请求分发方式:
轮询:nginx默认的连接请求分发方式;
ip_hash:同一客户端连接时,只连接同一个服务器;(解决了session问题);
weight :权重:按照权重比例分发请求;
fair:谁连接请求处理的快,发给谁,默认是不支持的(需要安装第三方软件);
使用IP_HASH方式:
配置:
upstream webgrp {
ip_hash;
server 192.168.1.20 ;
server 192.168.1.21 ;
}
测试:
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
[root@localhost ~]# elinks --dump 1.1.1.254
192.168.1.20:www
**可以看到都每次访问的都是同一个web服务器;
本文出自 “9379746” 博客,请务必保留此出处http://9389746.blog.51cto.com/9379746/1585185
nginx 反向代理和服务器组状态