安装:
#./configure –user=www –group=www–prefix=/usr/local/nginx/
–with-http_stub_status_module –with-http_realip_module
–with-http_geoip_module
#make
#make install
配置
user www;
worker_processes 8;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /usr/local/nginx/mime.types;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
geo $geo {
default default;
192.168.70.64/26 cnc;
192.168.70.192/26 cnc;
}
upstream default.server {
server 192.168.70.95:8080;
}
upstream cnc.server {
server 192.168.70.95:8081;
}
server {
listen 80;
server_name 192.168.70.95;
index index.html index.htm;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://$geo.server$request_uri;
}
}
server {
listen 8080;
server_name 192.168.70.95;
index index.html index.htm;
root /var/www1;
}
server {
listen 8081;
server_name 192.168.70.95;
index index.html index.htm;
root /var/www2;
}
}
在/var/www1下建立一个内容为8080的index.html文件,在/var/www2目录下建立一个内容为8081的index.html的文件
结果展示
从192.168.70.64/26、192.168.70.192/26段过去访问的结果是8081,从其它的ip访问过去时8080的结果,实现根据IP段进行负载均衡
该结构已经把客户端的IP以及请求等信息已经转发给了后端的真实webserver,所以基本算是一个透明的代理。它的缺点需要添加新的机器进行 WEB的透明代理(高并发情况下),同时单台nginx代理的有上限,预估计能到4W/s的并发左右(我曾经优化过一个线上的nginx web server并发连接数达到了4.5W/s),由于并未在正式环境中使用过该结构(不过使用的两个模块都是nginx的核心模块故,问题不大),为保险起 见,建议在使用前使用使用loadrunner,ab,webbench,tsung等压力测试工具进行相关的压力测试,并进行相关的功能性测试。该结构 的优点是精确的判断,不需要应用程序作任何的修改。




