Nginx实现反向代理和负载均衡的配置及优化

概述:反向代理是指的,服务器代理网络上的客户机请求,将请求转达给内部真实服务器,然后在返回给Internet客户端,代理服务器上面没有任何网页资料。反向代理和正向代理没有冲突,可以在防火墙设备中同时使用这两种结合,正向代理可以进行过滤,保护内部网络安全。

软件七层负载均衡大多是基于HTTP反向代理,Nginx反向代理能够支持虚拟主机,可以按照轮询,IP哈希,URL哈希,权重方式对后端服务器做负载均衡,还支持后端服务器健康检查。

常见的Web负载均衡方法:
1、 DNS轮询:将同一个主机名添加多个A记录,DNS将解析请求安装A记录的顺序,随即分配到不同的IP上,使用dig baidu.com 就可以看到不同的A记录对应的IP地址。缺点:可靠性低,其中一台出现故障,就不会给予回应,就算从DNS去掉该服务器IP,但是也会保存在各地区的ISP众多的DNS缓存中。系统股灾不均衡,使用简单轮询,不能计算出服务器的负载差异,所以有可能客户集中请求到其中某一台服务器。

2、F5、LVS、DNS只能解析这里不做讲述

配置环境:
三台CentOS5.3,一台做nginx代理,2台apache做页面测试。apache端口改为:8080,nginx使用80口接收客户请求。

第1部分:安装
1 建立用户及组
/usr/sbin/groupadd www
/usr/sbin/useradd -g www www


2 安装pcre 让nginx支持rewrite 方便以后所需
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.8.tar.gz
tar zxvf pcre-7.8.tar.gz
cd pcre-7.8/
./configure
make && make install


3 安装nginx
wget http://sysoev.ru/nginx/nginx-0.7.58.tar.gz
tar zxvf nginx-0.7.58.tar.gz
cd nginx-0.7.58/
./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-cc-opt='-O2' --with-cpu-opt=opteron
make && make install


#注意上文中的--with-cc-opt='-O2' --with-cpu-opt=opteron 这是编译器优化,目前最常用的是-02 而不是3.后面对应CPU的型号,可参照:http://wiki.gentoo.tw/index.php/HOWTO_CFLAG


第2部分:配置及优化配置文件
1 nginx.conf 配置文件:
user    www www;
worker_processes 4;


# [ debug | info | notice | warn | error | crit ]
error_log    /usr/local/webserver/nginx/logs/nginx_error.log    crit;
pid                /usr/local/webserver/nginx/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
{
        use epoll;
        worker_connections 51200;
}


http
{
        include            mime.types;
        default_type    application/octet-stream;
        source_charset GB2312;
        server_names_hash_bucket_size 256;
        client_header_buffer_size 256k;
        large_client_header_buffers 4 256k;


        #size limits
        client_max_body_size            50m;
        client_body_buffer_size        256k;
        client_header_timeout    3m;
        client_body_timeout 3m;
        send_timeout            3m;
#参数都有所调整.目的是解决代理过程中出现的一些502 499错误   
        sendfile on;
        tcp_nopush        on;
        keepalive_timeout 120; #参数加大,以解决做代理时502错误
        tcp_nodelay on;
       
        include                    vhosts/upstream.conf;
        include                    vhosts/bbs.linuxtone.conf;


}

推荐阅读:

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

相关推荐