通用

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,當前分割槽的配置就會覆蓋指定分割槽的配置。