一、nginx简介及作用

        1.nginx简介:

                是一个高性能的HTTP(可以作为静态页面的web服务器)和反向代理服务器。

        2.nginx特点:

                占有内存少,并发能力强。

        3.nginx主要作用:
                a. 正向代理

                        例:A服务器到C服务器网络不通,B服务器到C服务器网络通,可以通过A访问B,由B做ng代理,代理访问到服务器C。

                b.反向代理

                        例:服务器通过反向代理生成一个代理服务器,客户端可以通过代理服务器访问,但此时向客户端暴露的是代理服务器地址,从而隐藏保护真实的服务器地址。

                c.负载均衡(upstream)

                        例:高并发时,采用集群,将请求按需分配的集群中的各个服务器上,以实现负载均衡。

                d. 动静分离              

                        例:将动态资源和静态资源由不同的服务器来解析,加快解析速度,缓解服务器压力。

                e.防火墙

                        例:设置访问防火墙并设置白名单,确保服务器安全性

二、nginx常用命令   

        1.启动命令

                ./nginx

        2.关闭命令

                ./nginx  -s  stop

        3.重新加载命令

                ./nginx  -s  reload

        4.查看版本

                ./nginx  -v

        5.查看进程

                ps -ef|grep nginx

三、nginx配置文件(.../nginx/conf/nginx.conf

# work数量,worker_processes值越大,可以支持的并发处理量也越多,建议和cpu数一致
worker_processes 1;


#error_log path(存放路径) level(日志等级)
error_log  logs/error.log  info;


events {

    # 每个work下支持的最大连接数
    worker_connections 1024;

}

http {

    # 引入 MIME 类型配置文件(mime.types,通常在 Nginx 安装目录的conf文件夹下),用于告诉浏览器响应内容的类型
    include         mime.types;


    # 定义默认的 MIME 类型(当MIME文件找不到时的默认类型)
    default_type    application/octet-stream;


    # 日志,logs/host.access.log是存放路径,main是日志格式
    access_log      logs/host.access.log  main;


    # 启用sendfile机制(内核级文件传输),提升静态文件传输效率
    sendfile on;


    # 定义 HTTP 长连接(Keep-Alive)的超时时间(单位:秒)
    keepalive_timeout 65;


    server {
        # 端口号
        listen 80;

        # 定义的域名
        server_name localhost;

        location / {
            # 根目录,例如,请求http://localhost/index.html时,Nginx 会去html文件夹下寻找index.html文件。
            root html;

            # 定义索引文件,例如,请求http://localhost/时,会优先查找html目录下的index.html,若不存在则查找index.htm。

            index index.html index.htm;
        }
        
        # 指定错误状态码跳转的页面
        error_page 500 502 503 504 /50x.html;

        location = /50x.html {
            root html;
        }
    }
}

四、反向代理示例        

        用192.168.111.111反向代理真实IP127.0.0.0,使用户访问http://192.168.111.111:7000/a/跳转到http://127.0.0.0:1000;用户访问http://192.168.111.111:7000/b/跳转到http://127.0.0.0:2000

server {
    listen 7000;
    server_name 192.168.111.111;


    location /a/ {
        proxy_pass http://127.0.0.0:1000;
    }

    location /b/ {
        proxy_pass http://127.0.0.0:2000;
    }

}

五、负载均衡

        示例:访问192.168.222.222.9000时,会将所有的请求在集群中进行分配
worker_processes 1;

events {
    worker_connections 1024;
}

http {
    include         mime.types;
    default_type    application/octet-stream;
    access_log      logs/host.access.log  main;
    sendfile on;
    keepalive_timeout 65;


    upstream myserver{
        server 192.168.111.111:8080;
        server 192.168.111.111:8081;
    }

    server {
        listen 9000;
        server_name 192.168.222.222;
        location / {
            root html;
            proxy_pass http://myserver;
            index index.html index.htm;
        }        
    }
}

        负载均衡分配服务器策略
                1.轮询(默认)

                        10个请求分配给ABC服务器,A(1,4,7,10)B(2,5,7)C(3,6,9)

                2.weight(权重分配法)
upstream server_pool{   
    server 192.168.111.21 weight=1;    
    server 192.168.111.22 weight=2; 
    server 192.168.111.23 weight=3;   
}

                        10个请求分配给ABC服务器,A(1,7)B(2,3,8,9)C(4,5,6,10)

                3.ip_hash
upstream server_pool{   
    ip_hash;    
    server 192.168.111.21:80;    
    server 192.168.111.22:80;    
}

                        请求根据hash结果分配服务器,请求1第一次是192.168.111.21:80执行,后边都是192.168.111.21:80执行。可以解决session的跨域问题。

六、动静分离

server {
    listen 8080;
    server_name 192.168.111.111;

    location /image/ {
        root /data/;
        autoindex on;
    }

    location /www/ {
        root /data/;
        autoindex on;
        index index.html index.htm;
    }
}

因为配置autoindex on,所以访问http://192.168.111.111:8080/image/会显示静态文件目录

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐