• nginx的日志、禁止访问、反向代理、权重、nginx location匹配规则、location分离、WSGI、


    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
     提高响应速度,节省带宽

    WSGI

    django自带的wsgiref 在调试模式下使用的wsgi的文件,网关接口,协议

    uwsgi:协议

    uWSGI:具体实现方式

    安装

     pip3 install uwsgi -i https://pypi.douban.com/simple

    准备django程序

    启动

     cd django目录
     uwsgi --http :8080 --module mysite.wsgi

    配置文件格式

     conf
     py
     cnf
     xml
     json
     ini
     yaml

    配置文件启动

     [uwsgi]
     http = :8080
     #项目路径
     chdir= /data/mysite
     # uwsgi的文件
     wsgi-file= mysite/wsgi.py
     # 虚拟环境
     # virtualenv = /root/env
     # 进程个数
     processes = 2
     # 线程个数
     threads=2
     # 后台启动,指定日志的输出
     daemonize=/data/mysite/django.log
     # 清除临时文件
     vacuum = true
     # python文件发生改变自动重启
     py-autoreload=1
     
     uwsgi --ini file

    nginx的配置文件

     server {
      listen 80;
      server_name crm.oldboy.com;
      location / {
      proxy_pass http://127.0.0.1:8080;
      }
      location /static {
      root /data/supercrm;
      }
     }

    在django的配置中要写入

     SATAIC_ROOT=os.path.join(BASE_DIR,'static/')

    执行命令

     python3 manager.py collectstatic #用来收集静态文件

    第二种配置方式

     uwsgi
     socket= :9090
     nginx的配置文件
     location / {
      include uwsgi_params;
      uwsgi_pass 127.0.0.1:8080;
     }

    第三种配置方式

     uwsgi
     socket = file.sock
     nginx的配置文件
     location /{
      include uwsgi_params;
      uwsgi_pass unix://file.sock
     }
  • 相关阅读:
    hhhhhhhhhhhhhh
    hhhhh
    hhhhhhh
    项目为何失败,以及如何应对
    apollo组件部署报错分析
    ts中类型断言(类型守护)
    TypeScript详解
    flex:1的情况下,overflow:auto没有生效的问题
    vue2.x/vue3.0中使用ts
    Vue中实现数据列表无缝轮播
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12411634.html
Copyright © 2020-2023  润新知