• 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
    提高响应速度,节省带宽
    ```
  • 相关阅读:
    Day08_固化命令、grep、sed及awk命令
    Day07_网络管理、SSH、shell及元字符
    Day06_nginx及反向代理、共享存储nfs
    安装Apache所踩的的坑
    使用JS制作小游戏贪吃蛇
    清除浮动的几种方式
    纯CSS3图片反转
    在JAVASCRIPT中,为什么document.getElementById不可以再全局(函数外)使用?
    关于钉钉开发,心得
    javascript计算两个时间差
  • 原文地址:https://www.cnblogs.com/sun-10387834/p/12797220.html
Copyright © 2020-2023  润新知