• nginx集群搭建


    一、nginx搭建集群入门

    https://www.cnblogs.com/XJJD/p/10308840.html

    二、Nginx服务器之负载均衡策略(6种)

    https://www.cnblogs.com/1214804270hacker/p/9325150.html

    三、Nginx与Tomcat实现请求动态数据与请求静态资源的分离

    https://www.cnblogs.com/1214804270hacker/p/9299462.html

    四、示例

    1、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 {
        #accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
        #multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
        #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
        worker_connections  1024; #nginx默认连接数
    }
    
    
    http {
        include       mime.types; #文件扩展名与文件类型映射表
        default_type  application/octet-stream;#默认文件类型,默认为text/plain
        #access_log off; #取消服务日志    
    
        #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;
        #access_log log/access.log myFormat;  #combined为日志格式的默认值
        #sendfile        on;#允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
        #sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
        #keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。
        #tcp_nopush     on;
    
        #keepalive_timeout  0;
        keepalive_timeout  65;#连接超时时间,默认为75s,可以在http,server,location块。
        
        
    
        #gzip  on;
        #动态服务器组
        #1、轮询
        #fail_timeout    与max_fails结合使用。
        #max_fails    设置在fail_timeout参数设置的时间内最大失败次数,如果在这个时间内,所有针对该服务器的请求都失败了,那么认为该服务器会被认为是停机了,
        #fail_time    服务器会被认为停机的时间长度,默认为10s。
        #backup    标记该服务器为备用服务器。当主服务器停止时,请求会被发送到它这里。
        #down    标记服务器永久停机了。
        upstream liuyan{
            server 127.0.0.1:8001; 
            server 127.0.0.1:8002;
            server 127.0.0.1:8003 backup;#backup热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB.....     
            ip_hash;
            #可以配置无限多个服务器.....
            
        }
        
        #2、weight
        #upstream liuyan{
            #ip_hash;  #然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题。
            #server 127.0.0.1:8081 weight=1;#weight权重,数字越大被使用的几率越高。
            #server 127.0.0.1:8082 weight=1;
            #可以配置无限多个服务器.....
            
        #}
         #静态资源服务器
        upstream static{
           server 127.0.0.1:8056;
           #可以配置无限多个静态资源服务器.....
        }
        server {
            listen       8000;#监听端口
            server_name  localhost; #监听地址
            
            #添加头部信息
            #index vv.txt;  #设置默认页
            #charset koi8-r;
            #access_log  logs/host.access.log  main;
            location / {
                proxy_pass http://liuyan/; #请求转向liuyan 定义的服务器列表
                #添加头部信息
                #proxy_set_header X-Forwarded-Host $host;
                #proxy_set_header X-Forwarded-Server $host;
                #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                #deny 127.0.0.1;  #拒绝的ip
                #allow 172.18.5.54; #允许的ip  
            }
            #拦截静态资源
           location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {
               proxy_pass http://static;
           }
    
           location ~ .*.(js|css)?$ {
              proxy_pass http://static;
           }
    
           location ~ .*.(eot|svg|ttf|woff|woff2)$ {
               proxy_pass http://static;
           }
           
            #添加拦截路径和代理地址
            #location /api/ {              
                  # proxy_pass http://localhost:8001/;  #注意:使用代理地址时末尾记得加上斜杠"/"。      
            #}
    
           
    
    
            #error_page  404              /404.html;
            #error_page 404 https://www.baidu.com; #如果未找到此服务器会跳转到错误页,如百度页面
            # 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;
        #    }
        #}
    
    }

    2、部署服务器静态资源tomcat容器

    容器中放入要使用静态资源,这里就不演示了。

    3、部署服务器动态数据tomcat容器

    demo结构目录

    pom.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.1.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>jar</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>jar</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>1.8</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>

    页面:

    <!DOCTYPE html>
    <html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta charset="UTF-8">
        <title>tomcat</title>
    </head>
    <body>
    <a th:href="@{/msg}">点击</a>
    <h1 th:text="${msg}"></h1>
    <h1>静态资源8001</h1>
    <img src="/m.jpg"/>
    </body>
    </html>
    Controller:
    package com.example.jar.controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.GetMapping;
    
    @Controller
    public class DemoController {
    
        @GetMapping("/index")
        public String index(){
            System.out.println("==========》请求路径成功!");
            return "indexPng";
        }
        @GetMapping("/msg")
        public String msg(Model model){
            model.addAttribute("msg","欢迎访问8001服务器");
            return "indexPng";
        }
    
    }

    application.properties:

    server.port=8002

    4、演示demo负载均衡(轮询策略)

     

     5、demo静态分离

     

    链接:https://pan.baidu.com/s/1cneWTovv99pPZoAssaphcg
    提取码:3cip

  • 相关阅读:
    练手
    课余时间娱乐下
    2017-2-19,作业
    JavaScript(下)
    JavaScript(上)
    Day15:网络编程-HTTP
    小知识:静态导入
    多线程知识点:锁
    多线程知识点:同步
    Day16:反射技术
  • 原文地址:https://www.cnblogs.com/BoKe-LY/p/11904442.html
Copyright © 2020-2023  润新知