通用

1. 修改配置

在全局配置页面,可以设置网关节点的默认配置。

点击通用,在通用页面右侧是主要分类,可以点击具体分类,快速进入相应的设置选项区。 目前主要有:Worker、SSL、Proxy、Client Request、File Buffer、Log、DNS、Gzip、Brotli 以及 Others。

Worker connections

比如 Worker connections,可以用它控制每个工作进程的最大默认连接数。 这里修改为 10777,并点击右侧的 Save 按钮。

保存成功会自动同步到对应分区的所有网关节点。

SSL

对于 SSL ciphersSSL protocols ,这里提供了四个默认选项。

  • Modern:适用于对客户端比较新的情况。
  • Intermdiate:均衡版本,默认推荐选项。
  • Old:适用于对客户端比较老的情况。
  • Custom:当上面三个默认选项都不能满足需求是,可以进行自定义。

Proxy

Proxy 类,可以设置 代理缓存区代理缓冲区代理临时目录等代理相关的配置项。

  • 使用旧代理缓存(Use stale proxy cache):如果没有被代理的服务器能处理请求,则允许使用陈旧的缓存进行响应。
  • 代理缓存区(Proxy Cache Zone):如果我们有多块磁盘,可以设置多个 Proxy Cache Zone 这样可以把缓存分配到不同物理磁盘上提高性能。
  • 代理临时目录(Proxy temporary path):自定义路径用来存储从被代理服务器返回的临时文件。
  • 拦截源站错误页(Intercept the origin site’s error pages):决定是否在状态码 >= 300 时,由 OpenResty Edge 拦截并处理。默认不开启此选项。
  • 代理缓冲区大小(Proxy buffer size):设置用于读取从被代理服务器接收第一部分响应的缓冲区大小。
  • 代理缓冲区(Proxy buffers):为单个连接设置用于从被代理服务器读取响应的缓冲区的数量和大小。如果无法缓存完整的响应,则响应可能会被写入到临时文件中。
  • 代理忙缓冲区大小(Proxy busy buffers size):限制在响应尚未完全读取时可能忙于向客户端发送响应的缓冲区的总大小。
  • 代理临时文件写入大小(Proxy temporary file write size):限制一次写入临时文件的大小。
  • 代理连接超时时间(Proxy connect timeout):设置与被代理服务器建立连接的超时时间,此超时通常不能超过 75 秒。
  • 代理读取超时时间(Proxy reading timeout):设置从被代理服务器读取响应的超时时间。超时仅设置在两个连续的读取操作之间,而不是针对整个响应的传输。
  • 代理发送超时时间(Proxy sending timeout):设置将请求传输到被代理服务器的超时时间。超时仅设置在两个连续的写操作之间,而不是针对整个请求的传输。
  • 代理忽略客户端中止(Proxy ignore client abort):当客户端在收到响应之前关闭连接时是否应关闭与被代理服务器的连接。
    • 在未启用该配置的情况下,如果客户端提前关闭连接,那么就会导致 Edge Node 跟被代理服务器的连接也被关闭。这样就无法复用 Edge Node 和被代理服务器之间的长连接。
  • 代理缓存重新生效(Proxy cache revalidate):对带有 “If-Modified-Since” 和 “If-None-Match” 头的条件请求启用过期缓存内容的重新验证。

HTTP 请求参数配置

HTTP 请求包含如下配置项:

  1. 客户端请求体临时目录

    用来存放客户端请求体的临时目录定义了一个目录,用于存储保存客户请求体的临时文件。如果默认路径无法满足实际需要,你希望将客户的请求体放置在更高速率或者更大容量的磁盘,可以修改此配置。

    默认值:/usr/local/oredge-node/client_body_temp/

  2. 读取客户端请求体超时时间

    该配置项定义了读取客户端请求体的超时。超时只针对两个连续的读取操作之间的时间段,而不是针对整个请求体的传输时间。如果客户端在这段时间内没有传输任何东西,请求将以 408(请求超时)错误终止。

    一般情况下,默认 60 秒的超时时间是足够的。如果您希望缩短超时时间来抵御攻击,可以修改此配置项。如果在一些情况下需要使用更长的超时时间,也可以扩大该超时时间。

    默认值:60 秒

  3. 读取客户端请求头超时时间

    定义了读取客户端请求头的超时。如果客户端没有在这个时间内传输整个头,请求将以 408(请求超时)错误终止。

    默认值:60 秒

  4. 最大请求体大小

    设置客户端请求体的最大允许值。如果请求中的大小超过了配置的值,413(请求体过大)的错误会返回给客户端。请注意,浏览器不能正确显示这个错误。将大小设置为 0 将禁止检查客户端请求体的大小。

    默认值:3 MByte

  5. 请求头缓存大小

    设置用于读取客户端请求头的缓冲区大小。对于大多数请求,1K 字节的缓冲区就足够了。然而,如果一个请求包括长的 cookies, 或者来自 WAP 客户端,它可能不适合在 1K 字节内。

    默认值:1 KByte

  6. 最大请求体缓冲大小

    设置用于读取客户端请求正文的缓冲区大小。如果请求正文大于缓冲区,整个正文或其部分将被写入一个临时文件中。默认情况下,缓冲区的大小等于两个内存页。

    默认值:8 KByte

  7. Keep-alive 超时时间

    限制了通过一个保持连接处理请求的最大时间。在达到这个时间后,连接会在后续的请求处理后关闭。

    默认值:75 秒

  8. 发送超时时间

    设置向客户端传输响应的超时。该超时只在两个连续的写操作之间设置,而不是为整个响应的传输设置。如果客户端在这个时间内没有收到任何东西,连接就会关闭。

    默认值:60 秒

  9. 真实来源 IP 信任地址

    TCP 连接的客户端 IP 在此信任地址列表中时,才使用真实 IP 头修改来源 IP。

    默认值:-

  10. X-Forwarded-For

    将客户端地址和可选端口更改为在指定的 HTTP 头字段中内容。

    默认值:X-Forwarded-For

  11. 递归搜索 IP

    当真实 IP 头字段存在多个 IP 地址的时候,则从后往前查找第一个非信任地址作为客户的真实的客户端 IP。

    默认值:False

日志

Log 类,在这里可以对 error logaccess log 的输出进行自定义控制。

错误日志

  • Avoid generating error logs:默认是 DISABLE 状态,当启动时代表不输出任何 错误日志。
  • Logs Path:错误日志的输出路径。
  • Error log level:错误日志输出级别。
  • Maximum number of log files to keep:最多保持日志数目, error logaccess log 将会每小时轮转,只保持最后更新的日志文件以节约磁盘空间。

访问日志

为了提高访问日志的写入速度,这里默认开启了缓冲区,适当调整缓冲区大小,可以在性能与资源损耗之间找到比较合适的中间值。 如果不想启用缓冲区,可以直接把缓冲区大小设置为 0

Gzip

Gzip 类,可以设置默认 Gzip 选项,比如开关、压缩级别等。对于 Gzip 功能开关,还可以在应用中根据不同条件指定 Gzip 状态。

OpenTelemetry

如果要在页面规则中启用 OpenTelemetry,需要先在全局配置中启用 OpenTelemetry 的功能。

OpenTelemetry 这个分类中存在如下配置项:

  • Enable OpenTelemetry:启用开关,默认是关闭。
  • OpenTelemetry Service Name:用于设置 OTel 资源的 “service.name” 属性。它用来标识和区分不同的服务或应用程序。为每个服务提供一个唯一的名称,可以帮助在分布式系统中识别特定的服务。
  • OpenTelemetry Trace Context:指定如何传播 traceparent/tracestate 头部。
  • OpenTelemetry Exporter Endpoint:接收 OpenTelemetry 遥测数据的 OTLP 端点的地址。
  • OpenTelemetry Exporter interval: 两次导出数据之间的最大间隔,默认是是 5s。
  • OpenTelemetry Exporter Batch Size: 每个工作进程 (nginx worker) 在一个批次中发送的跨度(spans)最大数量,默认值为512。
  • OpenTelemetry Exporter Batch Count: 每个工作进程的待处理批次数量,超过限制的跨度将被丢弃,默认值为4。

使用 otelcol-contrib 采集数据

  1. 安装 otelcol-contrib

    安装 otelcol-contrib 请参考 collector installation

  2. 配置 otelcol-contrib

    下面是一个示例文件,该文件中采集了 访问日志,错误日志,连接指标,以及 trace 信息。

    采集的数据会输出到终端,请根据需要调整 exporters 部分。exporters 的配置可以参考 collector exporters

receivers:
  filelog/access:
    include:
      - /usr/local/oredge-node/logs/access.log
    operators:
      - type: json_parser
        include_file_name: false

  filelog/error:
    include:
      - /usr/local/oredge-node/logs/error.log
    multiline:
      line_start_pattern: ^\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}
    operators:
      - type: regex_parser
        regex: '(?s)(?P<time>\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[(?P<level>\w+)\] (?P<pid>\d+)#(?P<tid>\d+): \*(?P<connection_id>\d+) (?P<message>.*?), (?:client: (?P<client>[0-9a-f.]+), server: (?P<server>[^ ]+), request: "(?P<request>.*?)", host: "(?P<host>[0-9a-f:.]+)"|context: (?P<context>[\w.*]+))'
        timestamp:
          parse_from: attributes.time
          layout: '%Y/%m/%d %H:%M:%S'
        severity:
          parse_from: attributes.level
          preset: none
          mapping:
            debug: debug
            info: info
            info1: notice
            warn: warn
            error: error
            fatal: crit
            fatal2: alert
            fatal3: emerg

  otlp:
    protocols:
      grpc:
        endpoint: 0.0.0.0:4317

  nginx:
    endpoint: "http://127.0.0.1:8091/basic_status"
    collection_interval: 5s

processors:
  batch:

exporters:
  debug:
    verbosity: detailed

service:
  pipelines:
    logs/access:
      receivers: [filelog/access]
      processors: [batch]
      exporters: [debug]

    logs/error:
      receivers: [filelog/error]
      processors: [batch]
      exporters: [debug]

    metrics:
      receivers: [nginx]
      processors: [batch]
      exporters: [debug]

    traces:
      receivers: [otlp]
      processors: [batch]
      exporters: [debug]
  1. 启动 otelcol-contrib 采集

    以安装了 rpm 软件包为例,安装后配置文件在 /etc/otelcol-contrib/conrig.yaml。 更新该文件的配置,然后使用下面的命令启动数据采集。

    注意,上面的示例文件是输出到终端,因此在作为后台服务时需要修改 exporters 配置为期望的后台服务。

    sudo systemctl enable otelcol-contrib
    sudo systemctl start otelcol-contrib
    

    如果修改了配置,需要重启 otelcol-contrib,使用下面的命令

    sudo systemctl restart otelcol-contrib
    

Others

Others 类,可以设置操作日志和应用发布历史的清理策略。

2. 同步选项

通用页面上方展示的是 同步选项,默认展示 default 分区,选项 Automatic Synchronization 表示当前分区的所有配置会自动覆盖其他所有分区的配置。

当选中 Automatic Synchronization 时,只有 default 分区允许被修改。

取消选中 Automatic Synchronization 后,每个分区的修改就不会自动同步到其他分区,此时如果想要把当前分区的配置同步到其他指定分区,点击右上角的选项Copy to other Partitions

然后选择要同步的分区,点击 copy,当前分区的配置就会覆盖指定分区的配置。