1.nginx状态页
基于nginx模块ngx_http_auth_module实现,需要编译安装nginx的时候添加编译参数–with-http_stub_status_modle,否则提示语法错误。
在实际工作中也会开启该状态页查看nginx当前的状态,后期也可根据脚本获取这几个的状态值,根据zabbix等监控工具进行展示。
location /nginx_status {
stub_status on; #该参数需要开启
allow 192.168.142.0/24;
allow 127.0.0.1;
deny all;
}
参数详解:
Active connections: 3
server accepts handled requests
4 4 2
Reading: 0 Writing: 1 Waiting: 2
active connections:当前处于活动状态的客户端连接数,包括连接等待空闲连接数
accepts:统计总值,nginx自启动后已经接受的客户端请求的总数
handled:统计总值,nginx自启动已经处理完成的客户端请求的总数,通常等于accepts
requests:统计总值,nginx自启动后客户端发来的总的请求数
reading:当前状态,正在读取客户端请求报文首部的连接数
writing:当前状态,正在向客户端发送响应报文过程中的连接数
waiting:当前状态,正在等待客户端发出请求的空闲连接数,开启keep-alive的情况下这个值等于active-(reading+writing)
2.nginx内置变量使用
nginx的变量可以在配置文件中引用,作为功能判断或者日志等场景。
变量可以分为内置变量和自定义变量,内置变量是由nginx模块自带,通过变量可以获取到众多的与客户端访问相关的值。
内置变量:
$remote_addr:存放了客户端的地址,注意是客户端的公网ip
$args:存放了url中的指令
例如http://www.magedu.net/main/index.do? id=20190221&partner=search中的id=20190221&partner=search
$document_root:保存了针对当前资源的请求的系统根目录
$document_uri:保存了当前请求中不包含指令的uri
$host:存放了请求的host名称
$http_user_agent:客户端浏览器的详细信息
$http_cookie:客户端的cookie信息
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请求生成的文件绝对路径
$request_uri:包含请求参数的原始URI
$scheme:请求的协议,ftp,https,http
$server_protocol:保存了客户端请求资源使用的协议版本,HTTP/1.0,HTTP/1.1,HTTP/2.0
$server_addr:保存了服务器的ip地址
$server_port:请求的服务器的端口号
自定义变量:
自定义变量需要使用指定set指定
如:set $name value
location /main {
index index.html;
default_type text/html;
set $name "xiaoma";
echo $name;
set $linux36 $server_name;
echo $linux36;
}
4.nginx压缩
nginx对文件的压缩功能是依赖于模块ngx_http_gzip_module模块
如果没有添加该模块该如何添加呢?
–with-http_gzip_static_module
gzip on; #开启或禁用gzip压缩,默认关闭
gzip_comp_level 3; #压缩比由低到高从1到9,默认为1,一般设置3-5就可以
gzip_min_length 1k; #gzip压缩的最小的文件,小于设置值的文件将不会压缩
gzip_vary on; #如果启动压缩,是否响应报文首部插入'Vary:Accept-Encoding'
gzip_http_version 1.0 | 1.1 #启用压缩功能时,协议的最小版本,默认1.1
gzip_disable "MSIE [1-6]\."; #禁用IE6 gzip功能
gzip_types text/html #指明仅对哪些类型的资源执行压缩,默认为text/html
5.https功能
nginx的https功能基于模块ngx_http_ssl_module实现,因此如果编译安装的nginx要使用参数
编译安装需要开启该参数–with-http_ssl_module
ssl on | off; #是否开启ssl功能
ssl_certificate /path/to/file; #当前虚拟机使用的公钥文件,一般是crt文件
ssl_certificate_key /path/to/file#当前虚拟机使用的私钥文件,一般是key文件
ssl_session_timeout time; #客户端连接可复用ssl session中缓存的有效时长,默认5m
ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
#配置ssl缓存
off: 关闭缓存
none: 通知客户端支持ssl session cache,但实际不支持
builtin[:size]:使用OpenSSL内建缓存,为每worker进程私有
[shared:name:size]:在各worker之间使用一个共享的缓存,需要定义一个缓存名称和缓存空间大小, 一兆可以存储4000个会话信息,多个虚拟主机可以使用相同的缓存名称
6.浏览器不显示nginx版本
为了安全尽量不展示nginx的版本
vim src/http/ngx_http_header_filter_module.c
修改第49行,修改名称
然后重新编译
7.浏览器图标favicon.ico
favicon.ico文件是浏览器收藏网址时显示的图标,当客户端使用浏览器问页面时,浏览器会自己主动发起请求获取页面的favicon.ico文件
解决办法:
将图标保存到指定目录
location = /favicon.ico {
root /data/nginx/html/pc/images;
}