nginx 常用指令
Http 节点
error_page
定义状态码跳转页面。状态码必须在 300 和 599 之间
语法:error_page code ... [=[response]] uri;
常见用法:
代码语言:text复制error_page 500 502 503 504 /50x.html;
#当前是将状态码改成对应另外一个
error_page 404 =200 /empty.gif
# 也可以使用变量的方式
location / {
error_page 404 = @fallback;
}
location @fallback {
proxy_pass http://backend;
}
# 同时可以使用url进行重定向
error_page 403 http://example.com/forbidden.html;
log_format
指定日志格式,可以定义多个,但是名称不能一样。
语法:log_format name [escape=default|json|none] string ...;
name:日志格式名称
escape 的 default:将 “"”、“” 和其值小于 32 或者大于 126 的字符转义成 xXX,如果未找到变量值则用 “-” 表示。 json:“"” 转义成 “"”,“” 转义成 “”,字符值小于 32 转义成 “n”, “r”, “t”, “b”, “f”, 或者 “u00XX”。
可以使用的公共变量:
变量名称
解释
示例
$bytes_sent
发送到客户端的字节数
$connection_requests
通过当前连接的请求数
$request_length
请求长度(包括请求头,请求行和请求体)
$request_time
从客户端读取的第一个字节到最后的字节再加上写入日志所持续的时间,单位是毫秒。
$status
响应状态
$time_iso8601
ISO 8601 标准格式的本地时间
$time_local
通用日志格式中的本地时间
$remote_addr
客户端地址
211.28.65.253
$remote_user
客户端用户名称
$request
请求的URI和HTTP协议
GET /article-10000.html HTTP/1.1
$http_host
请求地址,即浏览器中你输入的地址(IP或域名)
www.it300.com
$upstream_status
upstream状态
200
$body_bytes_sent
发送给客户端文件内容大小
1547
$http_referer
url跳转来源
www.baidu.com/
$http_user_agent
用户终端浏览器等信息
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C
$ssl_protocol
SSL协议版本
TLSv1
$ssl_cipher
交换数据中的算法
RC4-SHA
$upstream_addr
后台upstream的地址,即真正提供服务的主机地址
10.10.10.100:80
$upstream_response_time
请求过程中,upstream响应时间
0.002
示例:
代码语言:swift复制log_format test '"客户端地址:"$remote_addr ";客户端名称:" $remote_user'
'";请求协议:" $request ";请求地址:" $http_host ";请求状态:" $status'
'";浏览器信息:" $http_user_agent "===" $bytes_sent "===" $connection_requests "===" $request_length:"===" $request_time';
access_log logs/test.log test;
"客户端地址:"127.0.0.1 ";客户端名称:" -";请求协议:" GET / HTTP/1.1 ";请求地址:" localhost:8078 ";请求状态:" 304";浏览器信息:" Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36 "===" 747 "===" 1 "===" 956:"===" 0.340
upstream
定义一组 server。
语法:upstream name { ... }
示例:
代码语言:text复制upstream backend {
server backend1.example.com weight=5;
server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
server backup1.example.com backup;
}
接收到请求会进行轮询访问每个节点,如果其中一个节点宕机会尝试下一个节点,直到最后一个地址或者最后一个错误地址的通信信息。TCP 和 UNIX 可以混合使用。
参数:
- weight:配置权重,默认是 1,上面 7 个请求,5 个请求经过第一个,剩下两个分别经过第二第三个。权重分别是 7 1 1。根据这个比例轮询。
- max_fails:失败几次后会被剔除
- fail_timeout:失败重试时间
- backup:备用机(其他服务挂掉之后,才会被访问)
- down:标识服务器节点不可用
max_fails=3 fail_timeout=30s 配置表示如果在 30s 内失败次数达到 3次,那么后面的 30s 将不会有请求经过当前地址,30s 后再次尝试,然后循环这个过程。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!