• nginx相关


    安装

    1. 安装依赖
    yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
    
    1. 源码安装
     1. 下载源码包
     wget -c https://nginx.org/download/nginx-1.14.2.tar.gz
     2. 解压缩
     tar -zxvf nginx-1.14.2.tar.gz
     3. 配置,编译,安装
     ./configure --prefix=/opt/nginx --with-http_ssl_module --with-http_stub_status_module 
    # 配置安装位置,开启ssl和状态模块
    make && make install
    4. 启动等相关操作
    - 启动  /opt/nginx-1.14.2/sbin/nginx
    - 关闭 /opt/nginx-1.14.2/sbin/nginx -s stop
    - 重新加载 /opt/nginx-1.14.2/sbin/nginx -s reload
    - 检测语法 /opt/nginx-1.14.2/sbin/nginx -t
    

    虚拟主机

    1. 基于域名的虚拟主机
    server {
        server_name 域名;
        location / {
        	# 指明网页根目录位置,放在虚拟主机中为局部变量,放在外面为全局变量
            root /xxx;
            index index.html index.htm;
        }
    }
    
    1. 基于端口的虚拟主机
    2. 基于ip的虚拟主机

    状态(status)配置

    Nginx状态信息(status)介绍
    Nginx软件在编译时又一个with-http_stub_status_module模块,这个模块功能是记录Nginx的基本访问状态信息,让使用者了解Nginx的工作状态。
    要想使用状态模块,在编译时必须增加--with-http_stub_status_module参数。

    # 检测nginx是否安装了status模块
    /opt/nginx-1.14.2/sbin/nginx -v
    # 启动status状态功能,修改配置文件
    #在访问ip/status的时候,进入状态功能        
    location /status {
            #开启nginx状态功能
                 stub_status on;
    } 
    

    访问日志

    在nginx.conf中开启access_log部分就行。

    限制访问指定ip访问

    # 限制122.153.xx.xx访问data
    locatin /data {
        deny 122.153.xx.xx;
    }
    

    匹配模式与顺序

    # 优先级从高到低
    精确匹配
    location = / {
        
    }
    匹配字符串,不做正则检查
    location ^~ /static {
        
    }
    正则匹配 
    location ~* .(gif|jpg|jpeg) {
        
    }
    匹配常规字符,有正则优先正则
    location /staic {
        
    }
    所有的location都不匹配时的默认匹配
    location / {
    }
    

    Django与Flask中用法

    location / {
        # 动态请求全部给django或flask
        uwsgi_pass http:0.0.0.0:8000;
    }
    location ~* .(gif|jpg|jpeg|mp3|mp4) {
        # 静态资源全部给nginx处理
        # alias指示静态资源路径 
        alias /data/static;
    }
    

    正向代理,反向代理

    1. 正向代理
      正向代理的对象是客户端

    2. 反向代理
      反向代理的对象是服务端
      server {
      listen 80;
      server_name 域名;
      location / {
      # 将请求转发给其他服务器
      proxy_pass http://128.32.xx.xx;
      }
      }
      nginx代理django或flask服务器是反向代理;
      注:django默认的wsgi模块,性能太低,因此通过支持高并发的uwsgi,启动多进程,去处理用户请求,uwsgi不解析静态资源,所以静态资源需要借助nginx

    负载均衡配置

    默认是轮询方式

    1. 入口服务器配置:
    # 定义负载均衡池,django为均衡池名字
    upstream django {
      # 可以设置权重,如:server ip1:port1 weight 2;weight值越大,分配到的几率越大。
      # 使用ip_hash。直接在server ip1:port1;上一行加上ip_hash;即可。注意不能和weight一起用。
       server ip1:port1;
       server ip2:port2;
       ...
    }
    server {
        listen 80;
        server_name 域名;
        location / {
            proxy_pass http://django;
            # proxy_params文件需要手动创建,包含语法参数,将一个配置文件添加到当前虚拟主机中。
            include /opt/nginx/conf/proxy_params;
        }
    }
    
    # 手动创建proxy_params文件,文件中存放代理的请求头相关参数,位置为/opt/nginx/conf/proxy_params
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    proxy_connect_timeout 30;
    proxy_send_timeout 60;
    proxy_read_timeout 60;
    
    proxy_buffering on;
    proxy_buffer_size 32k;
    proxy_buffers 4 128k;
    
    1. 负载均衡调度算法
      调度算法    概述
      轮询     按时间顺序逐一分配到不同的后端服务器(默认)
      weight    加权轮询,weight值越大,分配到的访问几率越高
      ip_hash    每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器。根据客户端ip哈希分配,不能和weight一起用
      url_hash   按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
      least_conn 最少链接数,那个机器链接数少就分发

    优点

    • 支持高并发,能支持几万并发连接
    • 资源消耗少,在3万并发连接下开启10个nginx线程消耗的内存不到200M
    • 可以做http反向代理和负载均衡
    • 支持异步网络I/O时间模型epoll
  • 相关阅读:
    Building a RESTful Web Service
    Proxy setting
    同步机制 note
    C++: Virtual Table and Shared Memory
    2018中国大学生程序设计竞赛
    2018 MUltiU 9 dp / 8 upper_bound ; 构造?/
    2018/8/10 部分枚举(类似尺取)
    2018/8/9 MultiU 6 并查集+dfs,反向建边提高查询效率 !!! / 最大字段和n维(降维)/ 状压+中途相遇法
    2018/7/29 cf 499 div 2(1011)
    2018/7/28 欧拉路径
  • 原文地址:https://www.cnblogs.com/tmdhhl/p/10828208.html
Copyright © 2020-2023  润新知