天天看点

CentOS 6.5系统下Nginx反向代理实现Tomcat负载均衡

CentOS 6.5系统下Nginx反向代理实现Tomcat负载均衡

1.查看当前系统的内核和系统参数以及版本。

[root@node1 ~]# uname -a

Linux node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

[root@node1 ~]# cat /etc/issue

CentOS release 6.5 (Final)

Kernel \r on an \m

2.安装nginx。

1)安装gcc编译器及相关工具和依赖库。

[root@node1 ~]# yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers pcre

2)编译安装pcre库。

PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正规表达式。Pcre的作用主要是使nginx支持HTTP rewrite模块。

创建一个指定放置压缩包的目录。

[root@node1 ~]# mkdir -p /linuxidc/tools

[root@node1 ~]# cd /linuxidc/tools/

[root@node1 tools]# tar -zxf pcre-8.33.tar.gz

[root@node1 pcre-8.33]# ./configure

[root@node1 pcre-8.33]# make && make install

[root@node1 nginx-1.5.8]# ./configure --with-http_stub_status_module --with-http_ssl_module --prefix=/data/nginx

[root@node1 nginx-1.5.8]# make && make install

注意:安装成功启动nginx,有可能会遇到下面错误,

[root@node1 nginx-1.5.8]# /data/nginx/sbin/nginx -t

/data/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

解决办法:

[root@node1 ~]# cd /lib64/

[root@node1 lib64]# ln -s libpcre.so.0.0.1 libpcre.so.1

3)此事再启动nginx,查看下进程和端口。

[root@node1 lib64]# /data/nginx/sbin/nginx -t

nginx: the configuration file /data/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /data/nginx/conf/nginx.conf test is successful

[root@node1 lib64]# /data/nginx/sbin/nginx 

[root@node1 lib64]# ps -ef | grep nginx

root      8991    1  0 16:43 ?        00:00:00 nginx: master process /data/nginx/sbin/nginx

nobody    8992  8991  0 16:43 ?        00:00:00 nginx: worker process 

root      8994  1907  0 16:44 pts/1    00:00:00 grep nginx

[root@node1 lib64]# netstat -anpt | grep nginx

tcp        0      0 0.0.0.0:80                  0.0.0.0:*                  LISTEN      8991/nginx

3.配置nginx web反向代理,实现两个tomcat负载均衡:

nginx配置文件如下:

[root@node1 ~]# cat /data/nginx/conf/nginx.conf

user  root;

worker_processes  1;

#error_log  logs/error.log  info;

pid  /data/nginx/logs/nginx.pid;

worker_rlimit_nofile 65535;

events {

    use epoll;

    worker_connections 65535;

    multi_accept on;

}

http {

    include      mime.types;

    default_type  application/octet-stream;

    charset  utf-8;

    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;

    sendfile      on;

    tcp_nopush    on;

    keepalive_timeout  60;

    server_tokens  off;

    limit_rate_after 3m;

    limit_rate 512k; 

    tcp_nodelay on;

    client_header_buffer_size 256k;

    large_client_header_buffers 4 256k;

    # Define nginx proxy module

        proxy_http_version 1.1;

        proxy_connect_timeout 60;

        proxy_read_timeout 60;

        proxy_send_timeout 60;

        proxy_buffer_size  16k;

        proxy_buffers      4 64k;

        proxy_busy_buffers_size    128k;

        proxy_temp_file_write_size 128k;

        proxy_headers_hash_max_size 51200;

        proxy_headers_hash_bucket_size 6400; 

    # Define Gzip compression module

    gzip on;

    gzip_vary on;

    gzip_min_length  1k;

    gzip_buffers    4 16k;

    gzip_http_version 1.0;

    gzip_comp_level 2;

    gzip_types      text/plain application/x-Javascript text/css application/xml;

    # Define realserver pool

    upstream  linuxidc.com {

        ip_hash;

        server 192.168.1.15:8080  max_fails=0  weight=5;

        server 192.168.1.19:8080  max_fails=0  weight=5;

  }

    server {

        listen      80;

        server_name  linuxidc.net www.linuxidc.net;

        location / {

                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://linuxidc.com;

                expires 1d; 

                access_log  logs/host.access.log  main;

        }

        # Define 404 502 503 504 error page

        error_page  404              /404.html;

        error_page  500 502 503 504  /50x.html;

        location = /50x.html {

            root  html;

        }

    }

}