Nginx介绍

服务器分类: Nginx、Apache、tomcat、Micorsoft Server

ng是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器,超越Apache的高性能和稳定性.

 $ sudo /usr/local/Cellar/nginx/1.15.3/bin/nginx                // 本地启动 9080

四层和七层负载均衡

负载均衡设备也被称为"四到七层交换机",四层就是基于IP+端口的负载均衡,七层就是基于URL等应用信息的负载均衡.

如果只做HTTP的负载均衡,用haproxy好了。性能很强

七层负载均衡优点:

    1、高并发连接: 支撑5万并发连接

    2、内存消耗少: 在3万并发连接,开启10个Nginx进程消耗150M内存

    3、配置文件简单

    4、节省带宽: 支持GZIP压缩,可以添加浏览器本地缓存的Header头,

    5、稳定性高: 用于反向代理, 宕机概率小

    6、支持热部署: 不间断服务进行更新

Nginx原理

一、七层负载均衡优势:

    1、对HTTP报头检查,可以检出状态码为400、500、600的错误信息,如果有错误将连接请求重新定向到另一台服务器

    2、可以根据数据类型(判断数据包是图像、压缩文件、或多媒体文件等),将数据引向内容服务器

    3、根据请求类型,将普通文本、图象等静态文档,或是动态文档请求,引向相应的服务器来处理

二、Nginx负载均衡是基于内容和应用的七层资的,Nginx抗并发强,是因为Nginx使用了非阻塞、异步传输

三、模块

    1、nginx负载均衡模块

        配置负载均衡是ngx_http_upstream_module,这模块是默认安装

    2、代理模块

        Proxy为nginx的代理模块, 允许将用户的HTTP请求转发到后端服务器

四、反向代理 

    反向代理是指以代理服务器接受internet上的连接请求,将请求转发给内部服务器,并将从服务器得到结果返回给internet的客户端

Nginx负载均衡调试策略

ng的upstream目前支付几种分配:

1、轮询: 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务down掉,能自动剔除

2、weight: 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况

    upstream bakend { 
        server 192.168.0.14 weight=10; 
        server 192.168.0.15 weight=10; 
    }

3、ip_hash: 每个请求按访问ip的hash结果分配,每个访客访问一个固定的后端服务器

    upstream bakend { 
        ip_hash; 
            server 192.168.0.14:88; 
            server 192.168.0.15:80; 
        }
    }

4、fair(第三方)

5、url_hash(第三方)

    upstream backend { 
        server squid1:3128; 
        server squid2:3128; 
        hash $request_uri; 
        hash_method crc32; 
    }

通过brew安装nginx

$ brew install nginx

    cd /usr/local/etc/nginx/            // nginx.conf 配置目录

    open /usr/local/Cellar/nginx  // 其实这个才是nginx被安装到的目录

$ cd /usr/local/var/www                // 进入到目录 localhost:9080

$ nginx             // 启动服务

重启ng:

    ps -ef|grep nginx

    kill -9 进程号

Nginx安装和删除

主要步骤: 下载包,压缩、配置编译

$ https://nginx.org/en/download.html    下载一个nginx包版本

$ cd /usr/local/ && mkdir newNginx     // 进入到local目录并创建一个newNginx目录

$ 将下载的包copy到新创建的newNginx目录, 并将包解压到当前目录   tar zxf nginx-1.12.2.tar.gz 

$ cd nginx-1.12.2

$ ./configure        // 验证过程

$ make

$ make install         // 这时候会创建一个nginx目录 /usr/local/nginx

$ 将newNginx目录的文件copy到nginx目录

Nginx配置文件

默认该配置文件被命名nginx.conf

    配置server

    server {
        listen       9092;                                // 端口
        root /Users/apple/siguang.liu/Hh/hh_h5;            // 指定根目录

        location / {
            proxy_pass  http://174.16.1.82:8080/;        // 代理到的服务器
        }

        error_page   500 502 503 504  /50x.html;        // 错误
        location = /50x.html {
            root   html;
        }

        location ^~ /api {
            proxy_pass  http://172.16.1.82:8080/;        // 如果访问以"/api"开头的代理的服务器
        }

        location ~ \.(gif|jpg|png|js|css|html|map)$ {    // 指定静态资源
            root /Users/apple/siguang.liu/Hh/hh_h5;
        }
    }

    可以通过include来将另一个文件的内容引用

    include servers/*.conf;


一、所存在的目录 /usr/local/nginx/conf            // 本机mac /usr/local/openresty/nginx

二、启动  sudo /usr/local/openresty/nginx/sbin/nginx      // 需要sudo管理员权限

三、启动后的可以通过调用带-s参数来执行文件来控制 

    $ nginx -s 命令

    1、reload - 重启  sudo /usr/local/openresty/nginx/sbin/nginx -s reload

    2、stop - 快速关机 sudo /usr/local/openresty/nginx/sbin/nginx -s stop

    3、quit - 优雅关机 sudo /usr/local/openresty/nginx/sbin/nginx -s quit

    4、reopen - 重新打开日志文件 sudo /usr/local/openresty/nginx/sbin/nginx -s reopen

四、查看、杀掉进程

    $ ps -ex | grep nginx

    $ kill -s quit 1682

五、配置文件结构

    指令分为简单指令和块指令,以空格分隔,以分号(;)结束

四、注释使用 #

    # HTTPS server
    #
    # server {
    #    listen       443 ssl;
    #    server_name  localhost;
    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;
    # }

Nginx配置 HTTP2.0

https://www.nginx.com/blog/nginx-1-9-5/

| https://www.cnblogs.com/meng1314-shuai/p/8335140.html // 安装Ng
| http://www.cnblogs.com/felixzh/category/937300.html
| https://www.cnblogs.com/felixzh/p/6283788.html
| https://www.cnblogs.com/taiyonghai/p/6728707.html