nginx和nat123都是开放的反向代理软件应用。nginx是单纯的反向代理软件,可通过自行配置文件实现搭建代理服务。nat123是综合NAT和反向代理的应用软件,直接使用添加80映射或动态解析(故障转称和负载均衡),不需要自己搭建服务。
Nginx反向代理负载均衡
Nginx反向代理负载均衡可以算是一起实现的两个功能,也可以说为了完成负载均衡功能而产生的反向代理。除了以上这一点,反向代理也对内网web服务器进行了保护。
*负载均衡实现方式
1:公司的一个域名可以绑定多个外网的IP地址,直接由DNS解析系统进行随机分配。除了性能分配不均的情况,还有更可怕的就是如果一台服务器down了,DNS主机还会随机的向这台服务器分配流量,导致访问超时,给用户带来不便。
2:使用nginx进行负载均衡
如图所示:内网有三台web server ,正常情况下,管理员根据服务器的性能,设置weight,分配使用这台服务几率(server 66.249.89.104 weight=3 max_fails=2 fail_timeout=30s;)。如果某台服务器反回超时,这台服务起就不再被分配用户。
这样比DNS服务器直接进行随机分配好的多。可靠性和利用率大大提高。
*反向代理:公司的域名只要和一个IP地址绑定就可以实现nginx负载均衡,大大节省购买IP地址时的代价。当用户访问公司域名时,请求直接被发送到nginx server上,nginx server根据weight值和fail_timeout来进行合理分配服务器资源。
更加人性化。
*Nginx 反向代理还防止了web server直接暴露在外网的环境下,一定程度上保证了web server的安全。
*用nginx实现反向代理和负载均衡:
安装:
#tar zxvf pcre-8.00.tar.gz
#./configure
#make && make install
#mkdir /usr/local/nginx/
#tar zxvf nginx- 0.8.24.tar.gz
#cd nginx-0.8.24
#./configure --prefix=/usr/local/nginx
//此处在本环节只需指定一个路径
#make && make install
#/usr/local/nginx/sbin/nginx
//启动Nginx
#echo "/usr/local/nginx/sbin/nginx" >>/etc/rc.local
//设置开机启动
对nginx配置文件进行修改:vim /usr/local/nginx/conf/nginx.conf
#user nobody;
worker_processes 1;
//此和CPU的核数相同
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll;
//epoll是Linux下多路复用IO接口select/poll的增强版本,
worker_connections 1024;
}
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;
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
limit_zone one $binary_remote_addr 5m;
limit_req_zone $binary_remote_addr zone=two:5m rate=10r/s;
keepalive_timeout 65;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
# keepalive_timeout 65;
gzip on;
gzip_min_length 1k;
gzip_http_version 1.1;
gzip_comp_level 2;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
proxy_buffers 8 10240k;
proxy_busy_buffers_size 20480k;
proxy_temp_file_write_size 20480k;
include vhost/*.conf;
//加载虚拟服务器配置文件
}
建立目录:mkdir /usr/local/nginx/conf/vhost/
建立文件:vim /usr/local/nginx/conf/vhost/www.test.com.conf
www.test.com.conf配置文件:
upstream test.com_server_pool
//设置内网服务器池
{
server 192.168.202.101 weight=2 max_fails=2 fail_timeout=30s;
server 192.168.202.102 weight=3 max_fails=2 fail_timeout=30s;
server 192.168.202.103 weight=3 max_fails=2 fail_timeout=30s;
}
server
{
listen 80;
server_name www.test.com test.com 129.1.1.100;
//设置域名和IP地址的绑定
location /
{
proxy_next_upstream http_502 http_504 error timeout invalid_header;
//遇到这些错误搜索pool
proxy_pass http://test.com_server_pool;
//设置使用test.com_server_pool
proxy_set_header Host www.test.com;
proxy_set_header X-Forwarded-For $remote_addr;
//如果使用内网使用虚拟主机,就要此配置
}
access_log /root/Desktop/www.test.com_access.log;
//设置日志文件(确保此文件存在)
}
重启nginx方法:
先杀进程:killall -9 nginx
启动nginx进程:/usr/local/nginx/sbin/nginx
nat123实现动态域名解析负载均衡和故障转移
在内网安装并启用,添加域名解析,选择动态域名解析,可以使用自己的顶级域名,选择负载均衡和故障转移。然后同一帐号在多处登录即可。