zoukankan      html  css  js  c++  java
  • nginx 服务企业应用

    1.nginx安装

     编译  模块编译少了,后期维护成本高。
     yum   默认集成模块,基本上够用。
     官方:版本较为新,配置文件简洁明了。
     epel:版本较低,而且主要的配置文件注释过多,不易读

    配置官方源
    cat /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 yum install nginx -y 安装nginx

    2.nginx常用基础模块

    1.nginx目录索引
    Syntax:    autoindex on | off;
    Default:    
    autoindex off;
    Context:    http, server, location
    
    #Syntax:    autoindex_exact_size on | off;
    Default:    
    autoindex_exact_size on;
    Context:    http, server, location
    默认为on,显示出文件得确切大小,单位是bytes
    修改为off,显示出文件的大概大小,单位是KB或者MB或者GB
    
    
    Syntax:    autoindex_localtime on | off;
    Default:    
    autoindex_localtime off;
    Context:    http, server, location
    默认为off ,显示文件时间为GMT时间
    修改为on,显示文件时间为文件的服务器时间
    
    charset utf-8,gbk;
    默认中文目录乱码,添加解决乱码

     2.状态模块

    1. location = /basic_status {
        stub_status;
    }
    
    
    
    Active connections: 291 
    server accepts handled requests
     16630948 16630948 31070465 
    Reading: 6 Writing: 179 Waiting: 106

     2.Nginx 状态详细信息如下
     Active connections  # 当前活动的连接数
     accepts             # 当前的总连接数TCP     accepts-handled=失败的总连接数
     handled             # 成功的连接数TCP
     requests            # 总的http请求数
    
    
     Reading             # 请求
     Writing             # 响应
     Waiting             # 等待的请求数,开启了keepalive

     3.nginx访问控制

    基于ip的访问控制

    location / {
        deny  192.168.1.1;
        allow 192.168.1.0/24;
        allow 10.1.1.0/16;
        allow 2001:0db8::/32;
        deny  all;
    }
    
    
    基于来源IP
    如果匹配成功,则不继续匹配下面的内容。
    如果匹配不成功,则继续往下寻找能匹配成功的内容。
    deny和allow的顺序是有影响的。默认是从第一条开始进行匹配。
            
    1) 访问控制配置示例, 拒绝指定的IP访问该网站的某个location, 其他全部允许
                location /nginx_status {
                    stub_status;
                    deny 10.0.0.1/32;  #拒绝某个IP
                    allow all;         #允许所有人
                }
    2)访问控制配置示例2: 只允许指定的用户能访问该网站的某个location, 其它全部拒绝
                location /nginx_status {
                    stub_status;
                    allow 10.0.0.1/32;  #允许指定的人
                    deny all;            # 拒绝所有人
                }

     2. 基于用户名和密码访问认证

        1.先使用htpasswd创建对应的用户和密码
        yum install httpd-tools
        htpasswd -b -c /etc/nginx/auth_conf oldboy oldboy
    
           -c  Create a new file.
           创建一个新的密码文
           -b  Use the password from the command line rather than prompting for it.
           采用免交互的方式输入用户的密码信息
    
        2.nginx的配置
        location / {
            root /code/module;
            index index.html;
            auth_basic "Message";
            auth_basic_user_file /etc/nginx/auth_conf;
        }
        3.nginx -t   检查语法
        4. systemctl reload nginx   平滑重启

     4.访问限制

    访问限制
        限制连接数   tcp
        http {
            #定义连接限制
            limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
        }
        server {
            limit_conn conn_zone 1;
        }

    5.location匹配优先级

    location匹配优先级
    匹配符        匹配规则            优先级
    =    精确匹配                    1
    ^~    以某个字符串开头                2
    ~    区分大小写的正则匹配            3
    ~*    不区分大小写的正则匹配            4
    !~    区分大小写不匹配的正则            5
    !~*    不区分大小写不匹配的正则        6
    /    通用匹配,任何请求都会匹配到    7
    
            
    location 应用场景
    # 通用匹配,任何请求都会匹配到
    location / {
        ...
    }
    
    # 严格区分大小写,匹配以.php结尾的都走这个location    
    location ~ .php$ {
        ...
    }
    # 严格区分大小写,匹配以.jsp结尾的都走这个location 
    location ~ .jsp$ {
        ...
    }
    
    # 不区分大小写匹配,只要用户访问.jpg,gif,png,js,css 都走这条location
    location ~* .*.(jpg|gif|png|js|css)$ {
        ...
    }
    # 不区分大小写匹配
    location ~* ".(sql|bak|tgz|tar.gz|.git)$" {
        ...
    }

     测试location的访问

     vim www.conf
    server {
        listen       80;
        server_name  www.nmtui.com;
        root   html/www;
        location / {
           return 401;
        }
        location = / {
            return 402;
        }
        location /documents/ {
            return 403;
        }
        location ^~ /images/ {
            return 404;
        }
        location ~* .(gif|jpg|jpeg)$ {
        return 500;
        }
        access_log logs/access_www.log main;
    }
    
    4.9.4.2  访问测试
    根据请求不同uri的返回值验证 location的配置。
    [root@nfs01 ~]# curl -I -w "%{http_code}
    " -o /dev/null -s  www.nmtui.com/documents
    401
    [root@nfs01 ~]# curl -I -w "%{http_code}
    " -o /dev/null -s  www.nmtui.com
    402
    [root@nfs01 ~]# curl -I -w "%{http_code}
    " -o /dev/null -s  www.nmtui.com/documents/ss.jpg
    500
    [root@nfs01 ~]# curl -I -w "%{http_code}
    " -o /dev/null -s  www.nmtui.com/documents
    401
    [root@nfs01 ~]# curl -I -w "%{http_code}
    " -o /dev/null -s  www.nmtui.com/documents/
    403
    [root@nfs01 ~]# curl -I -w "%{http_code}
    " -o /dev/null -s  www.nmtui.com/images/1.jpg
    404
  • 相关阅读:
    SpringBoot list查询方法
    eclipse创建web项目
    loadrunner获取返回值为乱码
    连接数据库
    lr并发量和迭代的区别
    LoadRunner11.00入门教程出现的问题
    python学习杂记--函数参数的设置
    adb logcat的命令行开启和关闭
    python学习杂记--pycharm控制台输出乱码
    python学习杂记--装饰器
  • 原文地址:https://www.cnblogs.com/bidad/p/13976147.html
Copyright © 2011-2022 走看看