• linux下配置nginx负载均衡例子


    准备2台虚拟机:

    分别在两个虚拟机上安装tomcat,并在服务器A安装nginx,其中nginx端口设置为了 70。

    服务器A的tomcat安装目录:

    服务器B的tomcat安装目录:

    服务器A的nginx安装目录:

    准备test.jsp文件,分别上传到tomcat的 ROOT 目录下:

    上传到服务器A的test.jsp :

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Test Page</title>
    </head>
    <body>
    Test1 Page!!!<br/>
    remote ip :   <%=request.getHeader("X-real-ip") %>  <br/>
    nginx server ip : <%=request.getRemoteAddr()%>
    </body>
    </html>

    上传到服务器B 的test.jsp :

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Test Page</title>
    </head>
    <body>
    Test2 Page!!!<br/>
    remote ip :   <%=request.getHeader("X-real-ip") %>  <br/>
    nginx server ip : <%=request.getRemoteAddr()%>
    </body>
    </html>

    其中的  request.getHeader("X-real-ip") 用来获取在nginx里面设置的 客户端的真实IP,request.getRemoteAddr() 获取的是代理服务器nginx的IP。

    nginx 配置文件nginx.conf :

    #user  nobody;
    worker_processes  1;
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    
    
    events {
        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;
    
        sendfile        on;
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;
    
        #gzip  on;
        #
        #
        #webapp
        upstream myapp {   
              server 192.168.85.3:8080 weight=1 max_fails=2 fail_timeout=30s;   
              server 192.168.85.4:8080 weight=1 max_fails=2 fail_timeout=30s;   
        } 
    
        server {
            listen       70;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
            
    
    
            location / {
            #设置客户端真实ip地址
            proxy_set_header X-real-ip $remote_addr;        
            #负载均衡反向代理
            proxy_pass http://myapp;
                root   html;
                index  index.html index.htm;
            }
    
        #配置反向代理tomcat服务器:拦截.jsp结尾的请求转向到tomcat
            #location ~ .jsp$ {
            #设置客户端真实ip地址
        #    proxy_set_header X-real-ip $remote_addr;    
            #    proxy_pass http://192.168.85.3:8080;
            #}    
    
            #error_page  404              /404.html;
    
            # redirect server error pages to the static page /50x.html
            #
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
    
            # proxy the PHP scripts to Apache listening on 127.0.0.1:80
            #
            #location ~ .php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
    
            # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
            #
            #location ~ .php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
    
            # deny access to .htaccess files, if Apache's document root
            # concurs with nginx's one
            #
            #location ~ /.ht {
            #    deny  all;
            #}
        }
    
    
        # another virtual host using mix of IP-, name-, and port-based configuration
        #
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
    
        # HTTPS server
        #
        #server {
        #    listen       443 ssl;
        #    server_name  localhost;
    
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
    
        #    ssl_session_cache    shared:SSL:1m;
        #    ssl_session_timeout  5m;
    
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers  on;
    
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
        #
        server {
            listen 8888;
            server_name lhy.com;
        
            access_log  logs/lhy.access.log  main;
            
            location /{
            #正则表达式匹配uri方式:在/usr/local/nginx/lhy下建立一个test1234.html 然后使用正则匹配
        #location ~ test {
            #重写语法:if return (条件 = ~ ~*)
            #if ($remote_addr = 192.168.85.1) {
            #    return 401;
            #}
                    
            if ($http_user_agent ~* firefox) {
                rewrite ^.*$ /firefox.html;
                break; 
            } 
    
            root lhy;
                index index.html;
            }
        
        location /goods {
            rewrite "goods-(d{1,5}).html" /goods-ctrl.html;
            root lhy;
            index index.html;
        }
        }
    }

     启动nginx、两台tomcat,访问 反向代理服务器nginx:http://192.168.85.3:70/test.jsp。

    第一次访问,访问的是服务器A:

    第二次访问,访问的是服务器B:

    nginx+tomcat实现的  反向代理+负载均衡至此实现。

  • 相关阅读:
    Git_学习_05_ 解决冲突
    Git_学习_04_ 多人协作开发的过程
    PostgreSQL与Oracle对应的函数
    Mysql学习_02_mysql数据导入导出
    【SPOJ】1812. Longest Common Substring II(后缀自动机)
    【BZOJ】2555: SubString(后缀自动机)
    【BZOJ】3172: [Tjoi2013]单词(后缀自动机)
    【SPOJ】8222. Substrings(后缀自动机)
    【wikioi】3160 最长公共子串(后缀自动机)
    【BZOJ】1079: [SCOI2008]着色方案(dp+特殊的技巧)
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/10454898.html
Copyright © 2020-2023  润新知