zoukankan      html  css  js  c++  java
  • ngin 模块及模板

    nginx碎碎念

    server {
            listen 80;
            server_name www.abc.com;
            access_log /var/log/nginx/www.abc.com.log;
    
            location / {
            root    /dir;
            index /a.txt;
            access_log /var/log/nginx/www.abc.com.dir.log;
            }
    }
    
    nginx的源:有官网上的源,有阿里云上的源,github上面的源
    下载nginx的方式,wget,yum,windows下载,不同的下载方式的安装方法不一样,相关文件的位置不一样,相关文件的内容不一样
    
    nginx配置文件可以简单概括为:
    	核心层,事件层,http层
    	http层包括:server层,location层
    yum下载的官网nginx可以include,阿里云nginx不可以include
    
    location / 可以认为是隐藏的
    root和index在某些模块中可以省略
    一般来说root和alias必须要指定一个,不知道就会报错(403),index和autoindex也必须指定一个,不指定就报错(403)
    root可以使用alias代替(使用alias将少一层目录)
    index可以使用autoindex代替(区别是直接显示一个文件内容,显示文件或目录的层级结构)
    root里面的 / 是根,别的地方的根是站点目录
    index后面的文件名可以是任意的,html文件可以使用绝对路径,也可以使用相对路径
    
    nginx日志总是作用于最小的作用域
    access.log	该文件记录着nginx正常的访问日志和报错日志
    error.log	该文件只记录着nginx报错日志
    
    
    /etc/nginx/conf.d/default.conf
    	该文件记录着nginx默认的信息,不过优先级低(默认的站点目录,HTML页面,error_page,location)
    /usr/share/nginx/html
    	这个目录是安装nginx自动生成目录,这个目录和使用root相对路径(/50.html,html/50html)有关
    /usr/share/nginx/html/50x.html 
    	nginx默认的50x 的反馈页面	
    /usr/share/nginx/html/index.html
    	下载好的nginx默认的html页面,和IP的访问好玩localhost的访问有关
    /etc/logrotate.d/
    	centos7中默认的日志切割文件,可以自动切割nginx,mysql,yum的日志,天周年默认不等
    	
    一个server代表一个网站,一个location代表一个页面的跳转
    一个nginx搭载的网站里面有目录,各种后缀的文件,html页面
    通过nginx不同的模块可以给nginx增加不同的功能,比如:显示目录的层级结构,文件的大小,状态时间,设置网站的密码,限制访问,限制并发访问
    
    401	:认证失败
    

    nginx模块

    index模块

    可以使用html的语法编写html,显示美丽的html页面

    1.手写server语句
    vim /etc/nginx/conf.d/syy1.conf 
    server {
            listen 80;
            server_name www.abc.com;
    
            location / {
            root    /dir;
            index index.html;
            }
    }
    
    2.检查和检测,重载
    nginx -t
    nginx -s reload
    
    3.创建站点目录
    mkdir /dir
    
    4.创建html文件,并写入内容
    
    5.windows上域名解析
    
    6.浏览器访问
    F5	alt+F5	F12+network+cache	换别的浏览器
    

    autoindex模块

    1.手写server语句
    vim /etc/nginx/conf.d/syy1.conf 
    server {
            listen 80;
            server_name www.abc.com;
    
            location / {
            root    /dir;   
            autoindex on;
            }
    }
    
    2.检查和检测
    nginx -t
    nginx -s reload
    
    3.创建站点目录
    mkdir /dir
    
    4.移除站点目录下的html,htm文件
    
    5.windows上域名解析
    
    6.浏览器访问
    F5	alt+F5	F12+network+cache	换别的浏览器
    

    添加字符集

    	charset utf-8,gbk;
    

    autoindex_exact_size模块

    on :显示文件的字节

    off :显示文件的常用单位

    只显示文件的大小,不显示目录的大小,太小的文件不会显示常用的单位

    1.手写server语句
    vim /etc/nginx/conf.d/syy1.conf 
    server {
            listen 80;
            server_name www.abc.com;
            charset utf-8,gbk;
            autoindex_exact_size off;
            
            location / {
            root    /dir;   
            autoindex on;
            }
    }
    
    2.检查和检测
    nginx -t
    nginx -s reload
    
    3.创建站点目录
    mkdir /dir
    
    4.移除站点目录下的html文件
    
    5.windows上域名解析
    
    6.浏览器访问
    F5	alt+F5	F12+network+cache	换别的浏览器
    

    autoindex_localtime on

    on :显示格林时间

    off :显示当地时区时间

    这个时间最终显示文件的状态时间

    1.手写server语句
    vim /etc/nginx/conf.d/syy1.conf 
    server {
            listen 80;
            server_name www.abc.com;
            charset utf-8,gbk;
            autoindex_exact_size off;
            autoindex_localtime off;
            
            location / {
            root    /dir;   
            autoindex on;
            }
    }
    
    2.检查和检测
    nginx -t
    nginx -s reload
    
    3.创建站点目录
    mkdir /dir
    
    4.移除站点目录下的html文件
    
    5.windows上域名解析
    
    6.浏览器访问
    F5	alt+F5	F12+network+cache	换别的浏览器
    

    ngx_http_stub_status_module模块

    最简单的模块,站点目录都不用配...

    这个网站可以使用allow和deny

    1.手写server语句
    vim /etc/nginx/conf.d/syy1.conf 
    server {
            listen 80;
            server_name www.abc.com;
    
            location = /basic_status {
            stub_status;
            }
    }
    
    2.检查和检测
    nginx -t
    nginx -s reload
    
    3.浏览器访问
    http://www.abc.com/basic_status
    
    F5	alt+F5	F12+network+cache	换别的浏览器
    
    #可以修改location
            location = /zt {
            stub_status;
            }
    
    #可以使用allow和deny(先写allow再写deny)
            location = /zt {
            stub_status;
            allow 10.0.0.0/24;
            deny all;
            }       
    

    ngx_http_auth_basic_module模块

    该模块放在server里或者location都可以,但是不能单独放在一个location里面

    可以给整个网站设置密码,也可以给指定的location设置密码

    该模块放在哪就是给哪个模块设置密码,重复设置密码无意义

    这个模块不能设置免密登录

    1.手写server语句
    vim /etc/nginx/conf.d/syy1.conf 
    server {
            listen 80;
            server_name www.abc.com;
    
    	   location / {
            root    /dir;   
            autoindex on;
            
            auth_basic           "closed site";
            auth_basic_user_file /dir/htpasswd;
            }
    
            location = /zt {
            stub_status;
            }
    }
    
    2.检查和检测(#只是检查server语句语法而已,站点目录不存在的话都不会被检测出来)
    nginx -t
    nginx -s reload
    
    3.创建站点目录
    mkdir /dir
    
    写在哪就是给谁设置密码,可以给网站,location,指定的html设置密码
    htpasswd -b -c /dir/htpasswd syy 123
    
    4.移除站点目录下的html文件
    
    5.windows上域名解析
    
    6.浏览器访问
    F5	alt+F5	F12+network+cache	换别的浏览器
    
    
    

    ngx_http_access_module

    该模块放在server里或者location都可以,但是不能单独放在一个location里面

    允许某一网段的的IP访问,拒绝剩下的所有用户的访问

    basic和access 是两个模块,互不相关

    小心allow和deny的顺序

    vim /etc/nginx/conf.d/syy1.conf +13
    server {
            listen 80;
            server_name www.abc.com;
    
            location / {
            root    /dir;
            autoindex on;
    
            #auth_basic           "closed site";
            #auth_basic_user_file /dir/htpasswd;
    
            allow 10.0.0.0/24;
            deny  all;
    }
    
            location = /zt {
            stub_status;
            }
    }
    
    
    vim /etc/nginx/conf.d/syy1.conf +13
    server {
            listen 80;
            server_name www.abc.com;
    
            location / {
            root    /dir;
            autoindex on;
    
            #auth_basic           "closed site";
            #auth_basic_user_file /dir/htpasswd;
    }
    
            location = /zt {
            stub_status;
            allow 10.0.0.0/24;
            deny all;
            }
    }
    
    #使用curl命令取出指定内容
    curl http://syy:123@www.syy1.com/zt
    

    不能这样分开写

    Y5XxMQ.md.png

    ngx_http_limit_conn_module模块

    连接限制,限制同时最高500个连接(只对公网IP限制)

    超过500个连接后,后续全部显示403

    1.主配置文件
    vim /etc/nginx/nginx.conf  
    limit_conn_zone $binary_remote_addr zone=perip:10m; 
    limit_conn_zone $server_name zone=perserver:10m;
    
    2.从配置文件
    vim /etc/nginx/conf.d/syy1.conf 
    server {
            listen 80;
            server_name www.syy1.com;
    
            limit_conn perip 3;
            limit_conn perserver 3;
    
            location / {
                    root /code/syy1;
                    #index index.html;
                    autoindex on;
    
                    }
            }
    
    3.nginx -s reload
    
    4.浏览器 访问该server中的任意一个location
    

    使用ab命令对某一个网站( / 或者某一个页面)进行压测

    -c	:并发用户数
    -n	:发送请求数(总数)
    
    #域名必须加/
    
    ab -c100 -n 1000 http://www.syy1.com/
    

    ngx_http_limit_req_module 模块

    请求限制,限制并发请求

    并发请求返回状态码503

    1.主配置文件设置限制
    vim /etc/nginx/nginx.conf 
    limit_req_zone $binary_remote_addr zone=perip:10m rate=1r/s;
    limit_req_zone $server_name zone=perserver:10m rate=10r/s;
    
    2.从配置文件调用
    vim /etc/nginx/conf.d/syy1.conf +5
    server {
            listen 80;
            server_name www.syy1.com;
    
        limit_req zone=perip burst=1 nodelay;
        limit_req zone=perserver burst=1;
        
            location / {
                    root /code/syy1;
                    #index index.html;
                    autoindex on;
            }
    }
    
    3.浏览器测试手速
    503 Service Temporarily Unavailable (503服务暂时不可用)(服务器过载)
    

    自定义反馈状态码

    自定义状态码范围(400-599),只有某些模块可以自定义状态码

    1.自定义网站 单个IP'并发'请求造成的服务器过载 反馈的'状态码'
    vim /etc/nginx/conf.d/syy1.conf +5
    server {
            listen 80;
            server_name www.syy1.com;
    
        limit_req zone=perip burst=1 nodelay;
        limit_req zone=perserver burst=1;
        limit_req_status 412;
    
            location / {
                    root /code/syy1;
                    #index index.html;
                    autoindex on;
            }
    }
    
    2.浏览器测试手速
    412 Precondition Failed
    
    3.查看日志记录的状态码
    [root@web01 ~]# tailf /var/log/nginx/access.log
    10.0.0.1 - syy [19/May/2020:01:02:32 +0800] "GET / HTTP/1.1" 412 575 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36" "-"
    

    自定义状态码的 HTML页面

    1.自定义网站 单个IP'并发'请求造成的服务器过载 反馈的'状态码'
    vim /etc/nginx/conf.d/syy1.conf +5
    server {
            listen 80;
            server_name www.syy1.com;
    
        limit_req zone=perip burst=1 nodelay;
        limit_req zone=perserver burst=1;
        limit_req_status 412;
        error_page 412 /syy1.html;
    
            location / {
                    root /code/syy1;
                    #index index.html;
                    autoindex on;
    
                    auth_basic           "aaa";
                    auth_basic_user_file /code/htpasswd;
            }
    }
    
    2.编辑412 HTML页面
    vim /code/syy1/syy1.html 
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="=utf-8" />
            <title>标题</title>
        </head>
        <body>
            <center>
                <p>
                    412 Precondition Failed
                </p>
            </center>
            <img src="https://images.cnblogs.com/cnblogs_com/syy1757528181/1767642/t_20051810211013300809_980x1200_0.jpg" alt="看什么看" width="1200" height="1000">
    
        </body>
    </html>
    
    3.重载nginx
    
    4.浏览器测试手速
    

    nginx初步优化

    0.0>配置官方yum源,安装官方nginx
    0.1> 启动,加入开机自启动
    
    1.主配置文件
    vim /etc/nginx/nginx.conf  
    limit_conn_zone $binary_remote_addr zone=perip:10m; 
    limit_conn_zone $server_name zone=perserver:10m;
    
    limit_req_zone $binary_remote_addr zone=perip2:10m rate=1r/s;
    limit_req_zone $server_name zone=perserver2:10m rate=10r/s;
    
    2.手写server语句
    vim /etc/nginx/conf.d/syy1.conf 
    server {
            listen 80;
            server_name www.abc.com;
            
            access_log /var/log/nginx/www.abc.com.access.log main;
        	error_log /var/log/nginx/www.abc.com.error.log;
            
            #字符集
            charset utf-8,gbk;
            #显示常用单位
            autoindex_exact_size off;
            #显示当地时区时间
            autoindex_localtime off;
            #设置网站全站密码
            auth_basic           "closed site";
            auth_basic_user_file /dir/htpasswd;
            #访问限制
            deny 10.0.0.1;
            allow 10.0.0.0/24;
            deny  all;
            
            #设置状态(zt)location,加入访问控制
            location = /zt {
            stub_status;
            allow 10.0.0.0/24;
            deny all;
            }  
            
            #限制公网IP连接数
            limit_conn perip 3;
            limit_conn perserver 3;
            #限制并发请求
            limit_req zone=perip2 burst=1 nodelay;
            limit_req zone=perserver2 burst=1;
            
            #默认访问域名返回的html页面
            location / {
            root	/dir;
            index index.html;
            
            #自定义并发请求的反馈的状态码
            limit_req_status 412;
            error_page 412 /412.html;
                 
            }
            #自定义站点目录
            location /abc {
            root    /dir;   
            autoindex on;
            }
            
            #匹配大小写  .*.(svn|git|cvs)  统统拒绝  比如 tt.svn  .git .cvs
    		location ~ .*.(svn|git|cvs) {
    		deny all;
            }
    
    		# 忽略大小写匹配   .*.htm|html|xml|shtml   ->缓存 expires
    		location ~* .(htm|html|xml|shtml)$ {
    		expires 600;    #秒
             }
    		location  ~* .(js|css)$ {
    	    expires 30d;      #天
            }
    		location ~* .(mp3|htc|gif|ico|png|swf|jpg|jpeg|bmp)$ {
             etag off;         #关闭校验
            }
            
            #只要出现错误则跳转对应的错误页面/dir/*.html 下面的文件
    		error_page  400 = /dir/400.html;
    		error_page  404 = /dir/404.html;
    		error_page  500 = /dir/500.html;
    		error_page  502 = /dir/502.html;
    }
    
    3.检查
    nginx -t
    nginx -s reload
    
    4.创建站点目录
    mkdir /dir/abc -p
    
    5.创建html页面,加入HTML元素
    vim /dir/abc/index.html
    
    6.编辑412 HTML页面,400,404,500,502(#不做这些html页面的话,默认反馈)
    vim /dir/412.html 
    
    7.basic模块写在哪就是给谁设置密码,可以给网站,location,指定的html设置密码
    htpasswd -b -c /dir/htpasswd syy 123
    
    8.移除 想要显示下载目录的location中的 站点目录下的html文件
    rm -rf /dir/abc/*.htm*
    
    9.windows上域名解析
    10.0.0.7 www.abc.com
    
    10.浏览器访问,#测试网站(密码,访问限制,状态模块,文件单位,显示时间,并发请求,还有他的html页面,还有默认的index.html页面,相关的html页面,查看目录结构,验证location的模糊匹配)
    F5	alt+F5	F12+network+cache	换别的浏览器
    
    11.查看日志记录的状态码
    [root@web01 ~]# tailf /var/log/nginx/www.abc.com.access.log
    
    
  • 相关阅读:
    shell getopt getopts获取参数
    apache+svn+ladp认证
    SVN 迁移项目分支
    iptables 优先级
    很实用的一篇HTTP状态码
    套路还在——矩阵计算估值
    CU上看到的一个简单的算法帖子
    linux下服务端实现公网数据转发
    c++接口实现与分离(转载)
    c++继承概念
  • 原文地址:https://www.cnblogs.com/syy1757528181/p/12920274.html
Copyright © 2011-2022 走看看