Nginx

作者: 索伦x | 来源:发表于2019-03-07 17:03 被阅读909次

    Nginx的作用有哪些

    1. 部署前端静态代码,实现前后端分离
    2. 高并发下负载均衡,服务的容灾
    3. 代理服务器(WEB API 网关)


      代理服务器

    什么是虚拟主机?

    虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供 www 服务,这样就可以实现一台主机对外提供多个 web 服务,每个虚拟主机之间是独立的,互不影响的。

    通过 Nginx 可以实现虚拟主机的配置,Nginx 支持三种类型的虚拟主机配置

    • 基于 IP 的虚拟主机
    • 基于域名的虚拟主机
    • 基于端口的虚拟主机

    跨域现象(CORS)

    Nginx安装

    准备文件目录结构:

    Nginx

    我们使用 Docker 来安装和运行 Nginx,docker-compose.yml?配置如下:

    version: '3.1'
    services:
      nginx:
        restart: always
        image: nginx
        container_name: nginx
        ports:
          - 81:80
        volumes:
          - ./conf/nginx.conf:/etc/nginx/nginx.conf
          - ./wwwroot:/usr/share/nginx/wwwroot
    

    Nginx配置文件nginx.conf

    # 启动进程,通常设置成和 CPU 的数量相等
    worker_processes  1;
    
    events {
        # epoll 是多路复用 IO(I/O Multiplexing) 中的一种方式
        # 但是仅用于 linux2.6 以上内核,可以大大提高 nginx 的性能
        use epoll;
        # 单个后台 worker process 进程的最大并发链接数
        worker_connections  1024;
    }
    
    http {
        # 设定 mime 类型,类型由 mime.type 文件定义
        include       mime.types;
        default_type  application/octet-stream;
    
        # sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
        # 必须设为 on,如果用来进行下载等应用磁盘 IO 重负载应用,可设置为 off,以平衡磁盘与网络 I/O 处理速度,降低系统的 uptime.
        sendfile        on;
    
        # 连接超时时间
        keepalive_timeout  65;
        # 设定请求缓冲
        client_header_buffer_size 2k;
        
        #负载均衡组
        #动态服务器组
        upstream tomcat {
            server 10.3.133.160:8080;
            #server 192.168.8.203:8080;
        }   
    
        # 配置虚拟主机 10.3.133.160
        server {
            # 监听的ip和端口,配置 10.3.133.160:80
            listen       80;
            # 虚拟主机名称这里配置ip地址
            server_name www.suoron.com;
            # 所有的请求都以 / 开始,所有的请求都可以匹配此 location
            location / {
              # 使用 root 指令指定虚拟主机目录即网页存放目录
              # 比如访问 http://ip/index.html 将找到 /usr/local/docker/nginx/wwwroot/html80/index.html
              # 比如访问 http://ip/item/index.html 将找到 /usr/local/docker/nginx/wwwroot/html80/item/index.html
    
              root   /usr/share/nginx/wwwroot/;
              # 指定欢迎页面,按从左到右顺序查找
                index  index.html index.htm;
           }      
           location /api/ {
              proxy_pass http://tomcat/;
           }
        }
    }
    

    Nginx部署前端

    将前端文件发布到 wwwroot
    

    Nginx 配置文件的结构

    # ...
    events {
        # ...
    }
    
    http {
        # ...
        server{
            # ...
        }
    
        # ...
        server{
            # ...
        }
    }
    

    注:每个 server 就是一个虚拟主机

    负载均衡相关配置说明

    Nginx目前支持五种策略,分别是:默认是轮询、权重(weight)、ip_hash、fair(第三方)、url_hash(第三方)


    负载均衡
    #### 定义负载均衡设备的 Ip及设备状态 
    upstream myServer {
        server 127.0.0.1:9090 down;
        server 127.0.0.1:8080 weight=2;
        server 127.0.0.1:6060;
        server 127.0.0.1:7070 backup;
    }
    
    

    在需要使用负载的 Server 节点下添加

    proxy_pass http://myServer;
    
    • upstream:每个设备的状态:
    • down:表示当前的?server?暂时不参与负载
    • weight:默认为 1?weight?越大,负载的权重就越大。
    • max_fails:允许请求失败的次数默认为 1 当超过最大次数时,返回?proxy_next_upstream?模块定义的错误
    • fail_timeout:max_fails?次失败后,暂停的时间。
    • backup:其它所有的非?backup?机器?down?或者忙的时候,请求?backup?机器。所以这台机器压力会最轻

    相关文章

      网友评论

        本文标题:Nginx

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