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

原文地址:https://www.cnblogs.com/syy1757528181/p/12920274.html