Skip to content

nginx

1.虚拟机安装与配置

准备:

  1. Vmware、Virtualbox、P
  2. CentOS 7.4

2.nginx的多进程模型

alt text

3.nginx的基础配置

conf
worker_processes  1; # 开启进程数

events {
    worker_connections  1024;
}


http {
    include       mime.types;   # 引入其他的配置文件
    default_type  application/octet-stream; # 以二进制流的形式返回给客户端
    sendfile        on; # 
    keepalive_timeout  65; # 保持连接超时的时间

    # 虚拟主机 vhost
    server {
        listen       80; # 监听的端口号
        server_name  localhost; # 域名、主机名
        
        location / {
            root   html; #相对路径,相对于nginx的主目录下
            index  index.html index.htm;
        }

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

4. 反向代理

alt text

5. 负载均衡

基本配置

雨露均沾,一人一下

upstream httpds { server 192.168.44.102:80; server 192.168.44.103:80; }

conf

worker_processes  1; # 开启进程数

events {
    worker_connections  1024;
}


http {
    include       mime.types;   # 引入其他的配置文件
    default_type  application/octet-stream; # 以二进制流的形式返回给客户端
    sendfile        on; # 
    keepalive_timeout  65; # 保持连接超时的时间

    upstream httpds {
        server 192.168.44.102:80;
        server 192.168.44.103:80;
    }

    # 虚拟主机 vhost
    server {
        listen       80; # 监听的端口号
        server_name  localhost; # 域名、主机名
        
        location / {
            root   html; #相对路径,相对于nginx的主目录下
            index  index.html index.htm;
        }

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

负载均衡策略之权重

权重的概念很简单,假设10次请求,会有8次请求到第一个服务器,会有2次请求到第二个服务器

轮询:
缺点: 无法保持会话,例如需要登录的场景,我这边登陆了,轮询到另一台服务器,结果另一台服务器没有token,导致重复登录

conf
upstream httpds {
    server 192.168.44.102:80 weight=8;
    server 192.168.44.103:80 weight=2;
}

down

down 可以理解为不参与负载均衡,例如这台服务器出现故障了,添加done,请求不会被转发到nginx服务器

conf
upstream httpds {
    server 192.168.44.102:80 weight=8 down;
    server 192.168.44.103:80 weight=2;
}

backup

backup 就是备用服务器,当102服务有问题时,就会转发到103服务器

conf
upstream httpds {
    server 192.168.44.102:80 weight=8;
    server 192.168.44.103:80 weight=2 backup;
}

ip_hash

根据来源的ip判断是否请求到相同的服务器

缺点: 如果ip变了,那么也无法保持会话

least_coon

最小连接数

也无法保持会话

url_hash

也无法保持会话

fair

根据后端服务器响应时间转发请求

缺点: 可能造成流量倾斜

6. 动静分离的原理及使用

动静分离的本质就是把静态资源提前放在nginx服务器上,少了一个环节

动静分离的配置

conf
localtion ~*/(js|img|css) {
    root html;
    index index.html index.htm
}

7. URLRewrite 伪静态

下方是一个静态的配置选项,整体的逻辑大概就是将访问的真实的url隐藏换为其他的url路径

匹配上rewirte后面的路径后,会转发到后面的路径上

conf
location / {
    rewrite ^/2.html$      /index.jsp?pageNum=2 break;
}


基本语法: 

rewrite      <regex>   <replacement>    [flag] :   
关键字        正则      替代内容            flag标记


关键字: 其中关键字error_log不能改变

正则: perl兼容正则表达式语句进行规则匹配

替代内容: 将正则匹配的内容替换成replacement

flag标记: rewrite支持的flag标记

rewrite参数的标签段位置:   
server,location,if

flag标记说明:   
last:   #本条规则匹配完成后,继续向下匹配新的location URL规则  
break   #本条规则匹配完成即终止,不再匹配后面的任何规则  
redirect # 返回302临时重定向,浏览器地址会显示跳转后的URL地址  
permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

8. 网关的概念