nginx的验证模块 输入用户名和密码
第一步先下载httpd 这个安装包
第二步编辑子配置文件
然后去网页访问192.168.68.3/admin/
连接之后,会出现404,404出现是因为没给网页写页面
如果要写页面,则在/opt/html,建立一个admin,然后写内容即可
如果想看建welcome cxk可以进入火狐里面查看
查看nginx状态 status
因为有用户名跟密码 所以刷不出来了,
如果要改变,则加上用户名 +密码
自定义错误页面
第一步修改主页面
主页面里面的内容
修改配置文件
网页访问
案例二:
然后去网页访问错误地址
检测文件是否存在
try_files会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误。
长连接
60代表真实的长连接时间,客户端看见的是60秒
作为下载服务器配置
实例:
在子配置文件里面修改
然后去建立download
去网页访问download
autoindex_exact_size on | off; 显示单位 模式是on,不显示单位,而off 显示单位
然后去网页访问download,显示单位了(k)
用户上传资料
nginx第三方模块
第一步,先下载echo这个模块的安装包,然后解压,因为是以zip结尾 所以用unzip解压
因为echo依赖于nginx 所以两者要一起编译(PATH指明模块路径)
然后make make install
因为是重新编译的所有要重启
修改子配置文件
随后,建立ip
随后在另外一个终端去curl
并没有访问/data/文件夹的内容,而是显示welcome your ip addr
变量
$remote_addr;
#存放了客户端的地址,注意是客户端的公网IP$args;
#变量中存放了URL中的参数,例如:http://www.kgc.org/main/index.do?id=20190221&partner=search
#返回结果为: id=20190221&partner=search 存放的就是这个$document_root;
#保存了针对当前资源的请求的系统根目录,例如:/apps/nginx/html$document_uri;
#保存了当前请求中不包含参数的URI,注意是不包含请求的指令,比
如:http://www.kgc.org/main/index.do?id=20190221&partner=search会被定义为/main/index.do
#返回结果为:/main/index.do$host;
#存放了请求的host名称
limit_rate 10240;
echo $limit_rate;
#如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0
$remote_port;
#客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口$remote_user;
#已经经过Auth Basic Module验证的用户名$request_body_file;
#做反向代理时发给后端服务器的本地资源的名称$request_method;
#请求资源的方式,GET/PUT/DELETE等$request_filename;
#当前请求的资源文件的磁盘路径,由root或alias指令与URI请求生成的文件绝对路径,如:/apps/nginx/html/main/index.html$request_uri; https:// www.baidu.com/main/index.do?id=20190221&partner=search
#包含请求参数的原始URI,不包含主机名,相当于:$document_uri?$args,例如:/main/index.do?id=20190221&partner=search$scheme;
#请求的协议,例如:http,https,ftp等$server_protocol;
#保存了客户端请求资源使用的协议的版本,例如:HTTP/1.0,HTTP/1.1,HTTP/2.0等$server_addr;
#保存了服务器的IP地址$server_name;
#请求的服务器的主机名$server_port; 443 https
#请求的服务器的端口号$http_<name>
#name为任意请求报文首部字段,表示记录请求报文的首部字段
arbitrary request header field; the last part of a variable name is the field name converted to lower case with dashes replaced by underscores
#用下划线代替横线
#示例: echo $http_User_Agent;$http_user_agent;
#客户端浏览器的详细信息$http_cookie;
#客户端的cookie信息
$cookie_<name>
#name为任意请求报文首部字部cookie的key名$http_<name>
#name为任意请求报文首部字段,表示记录请求报文的首部字段,ame的对应的首部字段名需要为小写,如果有
横线需要替换为下划线
arbitrary request header field; the last part of a variable name is the field
name converted to lower case with dashes replaced by underscores #用下划线代替横线
#示例:
echo $http_user_agent;
echo $http_host;
$sent_http_<name>
#name为响应报文的首部字段,name的对应的首部字段名需要为小写,如果有横线需要替换为下划线,此变量有问题
echo $sent_http_server;$arg_<name>
#此变量存放了URL中的指定参数,name为请求url中指定的参数
#对比 变量 $arg 是全部, 如果 要id 如下
echo $arg_id;
在子配置文件加入此项
然后去第二台终端 去curl
curl 'http://192.168.68.3/main?user=zhou&title=cto'
自定义变量
set 这个变量只能放在server location if三个里面
然后去第二个终端 kgc表示打印的名字 80 表示打印的端口
自定义访问日志
日志的格式可以自定义
打开主配置文件
圈起来的这边可以自定义日志
例如 自定义一个cxk的日志
然后重载一下
然后第二终端再去curl一下,然后再次查看一下日志文件,会多出来一个服务端ip地址,是因为在主配置文件里面修改日志格式式,后面加了一个$host
自定json日志格式
格式内容
log_format access_json '{"@timestamp":"$time_iso8601",'
'"host":"$server_addr",'
'"clientip":"$remote_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamhost":"$upstream_addr",'
'"http_host":"$host",'
'"uri":"$uri",'
'"xff":"$http_x_forwarded_for",'
'"referer":"$http_referer",'
'"tcp_xff":"$proxy_protocol_addr",'
'"http_user_agent":"$http_user_agent",'
'"status":"$status"}';
在主配置文件里面修改
然后nginx -s reload
去第二终端curl
然后去自己的服务器端查看一下日志格式
日志分割
nginx压缩功能
实例操作如下:
将index.html网页写入大量的文件
然后去查看日志文件
没加入大量文件之前大小是39,然后第二终端去curl下192.168.68.3
接着再看日志文件
如果要压缩,则在子配置文件中加入
然后保存
随后在网页上面访问192.168.68.3 一直按F12 然后按网络
强刷完之后 会出现200
表示启动压缩
切记:curl是文字版的图片 是不压缩的!!!
如果第二终端去访问192.168.68.3,然后去查看日志 size是不变的
预压缩 先把文件压缩好,然后再去访问减少cpu的消耗 不需要人家访问时现场压缩
gzip_static on |off (这个模块式额外的模块 我们在编译nginx时,已经下载了这个模块)
在自配置文件中加入这行
然后保存 重载
然后去data下面去压缩这个index.html
随后,将index.html改名
然后再去网页访问
整个流程