Solo  当前访客:3 登录 注册

喧哗博客-http://blog.xuahua.com

繁华过后的沉寂--技术经验分享
浏览次数: 95,037    文章总数: 91    评论总数: 3
标签:

nginx+tomcat负载均衡配置

1,前提nginx安装完成;如果不知道,可以请见http://blog.xuahua.com/articles/2016/08/24/1472024453381.html

示例Nginx安装目录为 /usr/local/nginx

2,jdk,tomcat安装完成。

下面要讲的是配置nginx 与tomcat的负载配置;本次示例使用的域名为 blog.xuahua.com

nginx的配置

/usr/local/nginx/conf/nginx.conf

user          root;
worker_processes  10;

#error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;
error_log /data/logs/nginx/error.log error;

pid        /var/run/nginx.pid;


events {
    use epoll;
    worker_connections  65535;
}


http {
    include      mime.types;
    default_type  application/octet-stream;
        server_names_hash_bucket_size 128;
        #client_header_buffer_size 32k;
        #large_client_header_buffers 4 32k;
        #client_max_body_size 64m;
        #client_body_buffer_size 256k;
        sendfile on;
        tcp_nopush     on;
        keepalive_timeout 60;
        tcp_nodelay on;
        client_header_timeout   3m;
        client_body_timeout     3m;
        send_timeout    3m;

#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
#
##gzip模块设置
gzip on; #开启gzip压缩输出
gzip_min_length 1k; #最小压缩文件大小
gzip_buffers 4 16k; #压缩缓冲区
gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_comp_level 2; #压缩等级
gzip_types text/plain application/x-javascript text/css application/xml;
##压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
gzip_vary on;
##limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用
##跨域访问
# add_header Access-Control-Allow-Origin *;
# add_header Access-Control-Allow-Headers X-Requested-With;
# add_header Access-Control-Allow-Methods GET,POST,OPTIONS;

             proxy_redirect off ;
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header REMOTE-HOST $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             client_max_body_size 50m;
             client_body_buffer_size 256k;
             proxy_connect_timeout 30;
             proxy_send_timeout 30;
             proxy_read_timeout 60;
             proxy_buffer_size 256k;
             proxy_buffers 4 256k;
             proxy_busy_buffers_size 256k;
             proxy_temp_file_write_size 256k;
 proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
             proxy_max_temp_file_size 128m;
    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  /var/log/nginx/access.log  main;

    access_log  /data/logs/nginx/access.log  main;

 upstream blog.xuahua.com{
        server 10.116.21.192:9090;
        server 10.116.21.192:9090;
}

 

重点 upstream的server配置

server 10.116.21.192:9090 指向 tomcat的9090端口

server 10.116.21.193:9090 指向内网193 tomcat的9090端口。

 

而且针对server 的配置还有更多的参数,可根据实际情况增加。

 

nginx的https配置可见  http://blog.xuahua.com/articles/2016/03/01/1456812606792.html

liunx下的Nginx安装

1,nginx 下载
 
wget  http://nginx.org/download/nginx-1.9.9.tar.gz
先 安装pcre,libevent, OpenSSL
>yum install pcre*
>yum install libevent*
>yum install openssl*
 
解压nginx,进入目录。
>./configure   --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module   --with-pcre=pcre源目录
pcre 指向源文件目录,而不是编译后的目录

                        # --with-http_stub_status_module:这个模块用于获取nginx自上次启动以来的工作状态,非核心模块

                       # --with-http_ssl_module     :HTTPS 使用

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

 

> make && make install

pcre-7.8-7.el6.x86_64
pcre-devel-7.8-7.el6.x86_64
pcre-static-7.8-7.el6.x86_64

代理配置

  proxy_redirect off ;
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header REMOTE-HOST $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             client_max_body_size 50m;
             client_body_buffer_size 256k;
             proxy_connect_timeout 30;
             proxy_send_timeout 30;
             proxy_read_timeout 60;
             proxy_buffer_size 256k;
             proxy_buffers 4 256k;
             proxy_busy_buffers_size 256k;
             proxy_temp_file_write_size 256k;
             proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
             proxy_max_temp_file_size 128m;

 

        2.1 pcre 编译安装  安装pcre 让nginx支持rewrite 方便以后所需

 

        wget ftp://ftp.csx.cam.ac.uk//pub/software/programming/pcre/pcre-8.37.tar.gz
        tar zxvf pcre-8.37.tar.gz
        cd pcre-8.37/
       ./configure --prefix=/usr/local/pcre
编译完后可以执行make check进行测试(这一步非必须)
        make
  1. Skipping pcregrep UTF-8 tests: no UTF-8 support in PCRE library  
  2. Testing pcregrep newline settings  
  3. PASS: RunGrepTest  
  4. ==================  
  5. All 5 tests passed  
  6. ==================  
  7. make[2]: Leaving directory `/usr/local/pcre-8.32'  
  8. make[1]: Leaving directory `/usr/local/pcre
    加上对utf-8的支持可以在./configuration时加上参数: ./configure --enable-utf8  
make install
 
nginx -t -c /usr/local/nginx/conf/nginx.conf
    2.2 libevent 编译安装

        # wget http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz
        # tar zxf libevent-2.0.12-stable.tar.gz 
        # cd libevent-2.0.12-stable
        #./configure  --prefix=/usr/local/lib
        # make && make install
     

nginx-最容易忽略的错误

场景:

当我访问子域名a.xxx 时,url 会自动跳转其他的子域名如admin.xxx ..

排查:

1,我怀疑工程代码里面做了跳转,检查所有代码发现并无此问题。(排除)

2,工程没有,那就是Nginx转发的问题。于是检查配置,

发现在nginx.conf 文件中,引入子域名的配置时,指定 include vhosts/sites_*.conf; 

但是在vhosts目录,访问的子域名 a.xxx 配置文件 为 sites_a.xx 

并不是指定的sites_*.conf 格式,导致Nginx并未生效此子域名配置。

才会导致访问子域名 a.xxx时,会跳转到一个其他的子域名。

原因:

nginx 引入子域名并未导入,只是在nginx.conf 中配置了upstream 才会导致可以访问,但是跳转又不正常。

 

以此为记!

nginx在liunx中的编译,安装

一,nginx 安装布署
 
1,nginx下载
 
wget  http://nginx.org/download/nginx-1.9.9.tar.gz
先 安装pcre,libevent, OpenSSL
>yum install pcre*
>yum install libevent*
>yum install openssl*
 
解压nginx,进入目录。
>./configure   --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module   --with-pcre=pcre源目录
pcre 指向源文件目录,而不是编译后的目录

                        # --with-http_stub_status_module:这个模块用于获取nginx自上次启动以来的工作状态,非核心模块

                       # --with-http_ssl_module     :HTTPS 使用

                     

 

> make && make install

pcre-7.8-7.el6.x86_64
pcre-devel-7.8-7.el6.x86_64
pcre-static-7.8-7.el6.x86_64

代理配置

  proxy_redirect off ;
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             proxy_set_header REMOTE-HOST $remote_addr;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             client_max_body_size 50m;
             client_body_buffer_size 256k;
             proxy_connect_timeout 30;
             proxy_send_timeout 30;
             proxy_read_timeout 60;
             proxy_buffer_size 256k;
             proxy_buffers 4 256k;
             proxy_busy_buffers_size 256k;
             proxy_temp_file_write_size 256k;
             proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
             proxy_max_temp_file_size 128m;

 

        2.1 pcre 编译安装  安装pcre 让nginx支持rewrite 方便以后所需

 

        wget ftp://ftp.csx.cam.ac.uk//pub/software/programming/pcre/pcre-8.37.tar.gz
        tar zxvf pcre-8.37.tar.gz
        cd pcre-8.37/
       ./configure --prefix=/usr/local/pcre
编译完后可以执行make check进行测试(这一步非必须)
        make
  1. Skipping pcregrep UTF-8 tests: no UTF-8 support in PCRE library  
  2. Testing pcregrep newline settings  
  3. PASS: RunGrepTest  
  4. ==================  
  5. All 5 tests passed  
  6. ==================  
  7. make[2]: Leaving directory `/usr/local/pcre-8.32'  
  8. make[1]: Leaving directory `/usr/local/pcre
    加上对utf-8的支持可以在./configuration时加上参数: ./configure --enable-utf8  
make install
 
nginx -t -c /usr/local/nginx/conf/nginx.conf
 
    2.2 libevent 编译安装

        # wget http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz
        # tar zxf libevent-2.0.12-stable.tar.gz 
        # cd libevent-2.0.12-stable
        #./configure  --prefix=/usr/local/lib
        # make && make install
     

公告

喧哗博客--繁华过后的沉寂--技术经验分享^-^
Copyright (c) 2009-2019, b3log.org & hacpai.com