nginx HTTP 节点常用指令

2023-11-20 14:18:54 浏览数 (1)

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腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

0 人点赞