nginx HTTP 节点常用指令

本文介绍了Nginx的几个关键配置指令,包括error_page用于定义状态码跳转,log_format定制日志格式,以及upstream设置后端服务器组,详细阐述了它们的语法、参数和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nginx 常用指令

Http 节点

error_page

定义状态码跳转页面。状态码必须在 300 和 599 之间

语法:error_page code ... [=[response]] uri;

常见用法:

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_iso8601ISO 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_statusupstream状态200
$body_bytes_sent发送给客户端文件内容大小1547
$http_refererurl跳转来源https://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_protocolSSL协议版本TLSv1
$ssl_cipher交换数据中的算法RC4-SHA
$upstream_addr后台upstream的地址,即真正提供服务的主机地址10.10.10.100:80
$upstream_response_time请求过程中,upstream响应时间0.002

示例:

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 { ... }

示例:

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 后再次尝试,然后循环这个过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值