• Nginx负载均衡、location匹配


    nginx的日志

    ```
    #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;
    remote_addr 访问ip地址
    remote_user 访问的用户
    time_local 本地时间
    request 包括请求方式 请求地址 请求协议版本
    status 状态码
    body_bytes_sent 发送的大小
    http_user_agent 用户的请求头
    http_x_forwarded_for
    ```

    禁止访问

    ```
    可以写在server或者location里面
    deny 192.168.21.1;
    allow 192.168.21.131;
    deny 192.168.21.0/24;
    
    ```

    反向代理

    - 起到保护网站安全的作用
    - 可以缓存静态文件
    - 实现负载均衡 F5 A10 lvs haproxy nginx

    ```
    upstream django {
    server 192.168.21.128:81;
    }
    server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
    
    location / {
    proxy_pass http://django;
    }
    
    ```

    权重

    weight

    ```
    upstream django {
    server 192.168.21.128:81 weight=3;
    server 192.168.21.131:81
    }
    server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    
    # Load configuration files for the default server block.
    include /etc/nginx/default.d/*.conf;
    
    location / {
    proxy_pass http://django;
    }
    }
    得到的结果是:
    访问128的3次,才访问131的一次
    ```

    ip_hash

    每个请求的ip做hash运算,这样每个固定的访客都会被负载到后端固定的机器

    ```
    upstream django {
    ip_hash;
    server 192.168.21.128:81
    server 192.168.21.131:81
    }
    ```

    backup

    当前面的都访问不到,则请求backup的备份,只要有一个通,则不会走backup

    ```
    upstream django {
    server 192.168.21.128:81;
    server 192.168.21.131:81;
    server 192.168.21.131:82 backup;
    }
    ```

    nginx location匹配规则

    ```
    location = / {
    精确匹配/ ,后面不能带其他的东西
    [ configuration A ]
    }
    
    location / {
    所有的以/开头的地址
    [ configuration B ]
    }
    
    location /documents/ {
    只匹配/documents/
    [ configuration C ]
    }
    
    location ^~ /images/ {
    # 匹配以/images/开头。
    ~严格大小写
    [ configuration D ]
    }
    
    location ~* .(gif|jpg|jpeg)$ {
    以(gif|jpg|jpeg)结尾的文件
    ~* 不区分大小写
    [ configuration E ]
    }
    优先级
    = > 完整路径 > ^~ > /
    ```

    location分离

    ```
    server {
    
    listen 80 ;
    server_name www.taobao.com taobao.com;
    location / {
    proxy_pass http://192.168.21.131:82;
    }
    location ~*.(jpg|gif|png)$ {
    root /data/img;
    }
    ```

    status

    ```
    location /status {
    stub_status on;
    }
    ```

    压缩

    ```
    gzip on
    提高响应速度,节省带宽
    ```
  • 相关阅读:
    快来使用Portainer让测试环境搭建飞起来吧
    ReviewBoard安装记录(CentOS5)
    awk中的NR,FNR ,NF,$NF,RS,ORS,FS,OFS
    Argument list too long解决办法
    Jenkins插件开发(6.3)—— 追踪jenkinscli.jar
    AWK中如何按列求和
    JIRA中显示中文显示为乱码“口口口”的解决方式(CentOS)
    Jenkins常用插件记录
    Jenkins插件开发(6.4)—— 分析CLI源码
    Jenkins插件开发(6.2)—— 如何自定义CLI命令
  • 原文地址:https://www.cnblogs.com/sun-10387834/p/12797220.html
Copyright © 2020-2023  润新知