美文网首页
nginx代理至tomcat负载均衡

nginx代理至tomcat负载均衡

作者: 一言不合_c8a0 | 来源:发表于2017-09-03 17:02 被阅读0次

    Nginx+tomcat是目前主流的Java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?直接安装配置如下:

    1、java JDK安装

    image.png

    2、Nginx安装

    image.png

    3、Tomcat安装:

    image.png

    如果需要修改tomcat发布目录为自己制定的目录,需要做如下调整,创建两个发布目录:

    mkdir -p /usr/webapps/{www1,www2}

    1.编辑vi /usr/local/tomcat1/conf/server.xml 在最后</Host>前一行加下内容:

    <Context path="" docBase="/usr/webapps/www1" reloadable="false"/>

    2.编辑vi /usr/local/tomcat2/conf/server.xml 在最后</Host>前一行加下内容:

    <Context path="" docBase="/usr/webapps/www2" reloadable="false"/>

    3.tomcat1发布目录内容:

    <html>
    <body>
    <h1>TOMCAT_1 JSP Test Page</h1>
    <%=new java.util.Date()%>
    </body>
    </html>

    4.tomcat2发布目录内容:

    <html>
    <body>
    <h1>TOMCAT_2 JSP Test Page</h1>
    <%=new java.util.Date()%>
    </body>
    </html>

    然后访问http://ip:8080、8081查看测试内容。

    5、Nginx+tomcat整合:

    整合主要是修改nginx.conf配置,给一个完整的nginx.conf线上配置,部分参数可以自己根据实际需求修改:
    user www www;
    worker_processes 8;
    pid /usr/local/nginx/nginx.pid;
    worker_rlimit_nofile 102400;
    events
    {
    use epoll;
    worker_connections 102400;
    }
    http
    {
    include mime.types;
    default_type application/octet-stream;
    fastcgi_intercept_errors on;
    charset utf-8;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 4k;
    large_client_header_buffers 4 32k;
    client_max_body_size 300m;
    sendfile on;
    tcp_nopush on;

    keepalive_timeout 60;

    tcp_nodelay on;
    client_body_buffer_size 512k;

    proxy_connect_timeout 5;
    proxy_read_timeout 60;
    proxy_send_timeout 5;
    proxy_buffer_size 16k;
    proxy_buffers 4 64k;
    proxy_busy_buffers_size 128k;
    proxy_temp_file_write_size 128k;

    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.1;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    log_format main '$http_x_forwarded_for - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" $request_time $remote_addr';

    upstream web_app {
    server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;
    server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;
    }

    chinaapp.sinaapp.com

    server {
    listen 80;
    server_name chinaapp.sinaapp.com;
    index index.jsp index.html index.htm;
    #发布目录/data/www
    root /data/www;

    location /   
    {   
    proxy_next_upstream http_502 http_504 error timeout invalid_header;   
    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://web_app;   
    expires      3d;   
    }   
    

    }

    }

    注* server段 proxy_pass定义的web_app需要跟upstream 里面定义的web_app一致,否则server找不到均衡。

    如上配置,nginx+tomcat反向代理负载均衡配置完毕,如果要做动静分离,只需要在nginx添加如下配置就OK了。

    配置Nginx动静分离

    location ~ .*.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$

    {

    root /data/www;

    expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力

    expires 3d;

    }

    相关文章

      网友评论

          本文标题:nginx代理至tomcat负载均衡

          本文链接:https://www.haomeiwen.com/subject/pjdjjxtx.html