ToB企服应用市场:ToB评测及商务社交产业平台

标题: nginx ngx_http_module(10) 指令详解 [打印本页]

作者: 钜形不锈钢水箱    时间: 2025-2-20 21:32
标题: nginx ngx_http_module(10) 指令详解
nginx ngx_http_module(10) 指令详解

nginx 模块目次
nginx 全指令目次
一、目次

1.1 模块简介


1.2 指令目次

1.2.1 ngx_http_v2_module


1.2.2 ngx_http_v3_module


1.2.3 ngx_http_xslt_module


二、解释

2.1 ngx_http_v2_module

ngx_http_v2_module 是 Nginx 的一个模块,用于支持 HTTP/2 协议。HTTP/2 旨在解决 HTTP/1.1 中的一些性能瓶颈,并提供更高效的网络通信。通过 ngx_http_v2_module,Nginx 可以利用 HTTP/2 的特性,如多路复用、头部压缩和服务器推送等,从而提拔网页加载速率和用户体验。
主要功能

常用指令
以下是与 ngx_http_v2_module 模块相关的常用设置指令及其简要阐明:

使用示例
以下是一些详细的设置示例,展示如何利用 ngx_http_v2_module 来实现 HTTP/2 支持。
   基本设置
  假设你想在你的网站上启用 HTTP/2 支持:
  1. server {
  2.     listen 443 ssl http2;  # 启用 HTTP/2 和 SSL
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.com.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.com.key;
  6.     ssl_protocols TLSv1.2 TLSv1.3;  # 仅启用安全的 TLS 版本
  7.     ssl_prefer_server_ciphers on;
  8.     location / {
  9.         root /var/www/html;
  10.         index index.html;
  11.     }
  12. }
复制代码
在这个例子中:

   服务器推送
  你可以使用 http2_push 指令来推送资源到客户端,减少额外的哀求往返时间:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.com.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.com.key;
  6.     ssl_protocols TLSv1.2 TLSv1.3;
  7.     ssl_prefer_server_ciphers on;
  8.     location / {
  9.         root /var/www/html;
  10.         index index.html;
  11.         # 推送 CSS 文件
  12.         http2_push /styles.css;
  13.         # 推送 JavaScript 文件
  14.         http2_push /script.js;
  15.     }
  16. }
复制代码
在这个例子中:

   流优先级
  固然 ngx_http_v2_module 不直接提供流优先级的设置选项,但你可以在前端代码中通过 HTTP/2 的 Priority 头部来设置优先级。比方,在 HTML 中可以这样指定:
  1. <link rel="stylesheet" href="/styles.css" importance="high">
  2. <script src="/script.js" importance="low"></script>
复制代码
欣赏器会根据这些提示调解资源加载的优先级。
   调解并发流数
  你可以通过设置 http2_max_concurrent_streams 来控制每个连接的最大并发流数:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.com.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.com.key;
  6.     ssl_protocols TLSv1.2 TLSv1.3;
  7.     ssl_prefer_server_ciphers on;
  8.     http2_max_concurrent_streams 100;  # 设置最大并发流数为 100
  9.     location / {
  10.         root /var/www/html;
  11.         index index.html;
  12.     }
  13. }
复制代码
在这个例子中:

注意事项

通过合理设置 ngx_http_v2_module,你可以充实利用 HTTP/2 的优势,明显提拔网页加载速率和用户体验。这对于构建高可用性和高性能的应用系统非常有效。
2.1.1 指令列表

http2

http2 指令用于控制是否启用 HTTP/2 协议。HTTP/2 提供了多项性能优化,如多路复用、头部压缩和服务器推送等。
  1. Syntax:        http2 on | off;
  2. Default: http2 off;
  3. Context: http, server
  4. This directive appeared in version 1.25.1.
复制代码

案例
   基本用法
  最简单的 http2 用法是启用或禁用 HTTP/2 协议:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     location / {
  7.         # 启用 HTTP/2 协议
  8.         http2 on;
  9.         proxy_pass http://backend;
  10.     }
  11. }
复制代码
在这个例子中:

注意事项

http2_body_preread_size

http2_body_preread_size 指令用于设置在处理哀求体之前预先读取的数据量。这有助于优化大哀求体的处理。
  1. Syntax:        http2_body_preread_size size;
  2. Default: http2_body_preread_size 64k;
  3. Context: http, server
  4. This directive appeared in version 1.11.0.
复制代码

案例
   基本用法
  最简单的 http2_body_preread_size 用法是指定预读取数据量:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     location /upload {
  7.         # 设置预读取数据量为 128 KB
  8.         http2_body_preread_size 128k;
  9.         proxy_pass http://backend;
  10.     }
  11. }
复制代码
在这个例子中:

注意事项

http2_chunk_size

http2_chunk_size 指令用于设置 HTTP/2 响应分块的巨细。这有助于优化响应传输的服从。
  1. Syntax:        http2_chunk_size size;
  2. Default: http2_chunk_size 8k;
  3. Context: http, server, location
复制代码

案例
   基本用法
  最简单的 http2_chunk_size 用法是指定响应分块巨细:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     location /stream {
  7.         # 设置响应分块大小为 16 KB
  8.         http2_chunk_size 16k;
  9.         proxy_pass http://backend;
  10.     }
  11. }
复制代码
在这个例子中:

注意事项

http2_idle_timeout

http2_idle_timeout 指令用于设置 HTTP/2 连接在空闲状态下的超时时间。这有助于管理连接资源,避免长时间占用连接。
  1. Syntax:        http2_idle_timeout time;
  2. Default: http2_idle_timeout 3m;
  3. Context: http, server
复制代码

案例
   基本用法
  最简单的 http2_idle_timeout 用法是指定空闲超时时间:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     location / {
  7.         # 设置空闲超时时间为 5 分钟
  8.         http2_idle_timeout 5m;
  9.         proxy_pass http://backend;
  10.     }
  11. }
复制代码
在这个例子中:

注意事项

http2_max_concurrent_pushes

http2_max_concurrent_pushes 用于设置 HTTP/2 连接中允许的最大并发推送哀求数。这有助于控制服务器在单个连接上可以自动推送的资源数量,避免过多的推送哀求影响性能。
  1. Syntax: http2_max_concurrent_pushes number;
  2. Default: http2_max_concurrent_pushes 10;
  3. Context: http, server
  4. This directive appeared in version 1.13.9.
复制代码

案例
   基本用法
  最简单的 http2_max_concurrent_pushes 用法是指定最大并发推送哀求数:
  1. http {
  2.     http2_max_concurrent_pushes 5;  # 设置最大并发推送请求数为 5
  3.     server {
  4.         listen 443 ssl http2;
  5.         server_name example.com;
  6.         ssl_certificate /etc/nginx/ssl/example.crt;
  7.         ssl_certificate_key /etc/nginx/ssl/example.key;
  8.         location / {
  9.             root /var/www/html;
  10.         }
  11.     }
  12. }
复制代码
在这个例子中,设置了 http2_max_concurrent_pushes 5,这意味着每个 HTTP/2 连接最多允许 5 个并发推送哀求。
   调解并发推送哀求数
  根据实际需求调解并发推送哀求数:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     location /low_push/ {
  7.         root /var/www/html;
  8.         http2_max_concurrent_pushes 3;  # 较少的并发推送请求数
  9.     }
  10.     location /high_push/ {
  11.         root /var/www/html;
  12.         http2_max_concurrent_pushes 20;  # 较多的并发推送请求数
  13.     }
  14. }
复制代码
在这个例子中:

注意事项

http2_max_concurrent_streams

http2_max_concurrent_streams 用于设置 HTTP/2 连接中允许的最大并发流数。这有助于控制单个连接上的并发哀求数量,提拔性能并避免资源争用。
  1. Syntax: http2_max_concurrent_streams number;
  2. Default: http2_max_concurrent_streams 128;
  3. Context: http, server
复制代码

案例
   基本用法
  最简单的 http2_max_concurrent_streams 用法是指定最大并发流数:
  1. http {
  2.     http2_max_concurrent_streams 64;  # 设置最大并发流数为 64
  3.     server {
  4.         listen 443 ssl http2;
  5.         server_name example.com;
  6.         ssl_certificate /etc/nginx/ssl/example.crt;
  7.         ssl_certificate_key /etc/nginx/ssl/example.key;
  8.         location / {
  9.             root /var/www/html;
  10.         }
  11.     }
  12. }
复制代码
在这个例子中,设置了 http2_max_concurrent_streams 64,这意味着每个 HTTP/2 连接最多允许 64 个并发流。
   调解并发流数
  根据实际需求调解并发流数:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     location /low_streams/ {
  7.         root /var/www/html;
  8.         http2_max_concurrent_streams 32;  # 较少的并发流数
  9.     }
  10.     location /high_streams/ {
  11.         root /var/www/html;
  12.         http2_max_concurrent_streams 256;  # 较多的并发流数
  13.     }
  14. }
复制代码
在这个例子中:

注意事项

http2_max_field_size

http2_max_field_size 用于设置 HTTP/2 哀求或响应头字段的最大巨细。这有助于防止过大的头字段导致内存溢出或其他问题。
  1. Syntax: http2_max_field_size size;
  2. Default: http2_max_field_size 4k;
  3. Context: http, server
复制代码

案例
   基本用法
  最简单的 http2_max_field_size 用法是指定头字段的最大巨细:
  1. http {
  2.     http2_max_field_size 8k;  # 设置头字段的最大大小为 8KB
  3.     server {
  4.         listen 443 ssl http2;
  5.         server_name example.com;
  6.         ssl_certificate /etc/nginx/ssl/example.crt;
  7.         ssl_certificate_key /etc/nginx/ssl/example.key;
  8.         location / {
  9.             root /var/www/html;
  10.         }
  11.     }
  12. }
复制代码
在这个例子中,设置了 http2_max_field_size 8k,这意味着每个头字段的最大巨细为 8KB。
   调解头字段巨细
  根据实际需求调解头字段巨细:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     location /small_fields/ {
  7.         root /var/www/html;
  8.         http2_max_field_size 2k;  # 较小的头字段大小
  9.     }
  10.     location /large_fields/ {
  11.         root /var/www/html;
  12.         http2_max_field_size 16k;  # 较大的头字段大小
  13.     }
  14. }
复制代码
在这个例子中:

注意事项

http2_max_header_size

http2_max_header_size 用于设置 HTTP/2 哀求或响应头部的总巨细。这有助于防止过大的头部数据导致内存溢出或其他问题。
  1. Syntax: http2_max_header_size size;
  2. Default: http2_max_header_size 16k;
  3. Context: http, server
复制代码

案例
   基本用法
  最简单的 http2_max_header_size 用法是指定头部的总巨细:
  1. http {
  2.     http2_max_header_size 32k;  # 设置头部的总大小为 32KB
  3.     server {
  4.         listen 443 ssl http2;
  5.         server_name example.com;
  6.         ssl_certificate /etc/nginx/ssl/example.crt;
  7.         ssl_certificate_key /etc/nginx/ssl/example.key;
  8.         location / {
  9.             root /var/www/html;
  10.         }
  11.     }
  12. }
复制代码
在这个例子中,设置了 http2_max_header_size 32k,这意味着每个哀求或响应头部的总巨细为 32KB。
   调解头部巨细
  根据实际需求调解头部巨细:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     location /small_headers/ {
  7.         root /var/www/html;
  8.         http2_max_header_size 8k;  # 较小的头部大小
  9.     }
  10.     location /large_headers/ {
  11.         root /var/www/html;
  12.         http2_max_header_size 64k;  # 较大的头部大小
  13.     }
  14. }
复制代码
在这个例子中:

注意事项

http2_max_requests

http2_max_requests 指令用于设置在关闭HTTP/2连接之前可以处理的最大哀求数。这个指令帮助控制HTTP/2连接的复用和资源管理。
  1. Syntax:        http2_max_requests number;
  2. Default:        http2_max_requests 1000;
  3. Context:        http, server
  4. This directive appeared in version 1.11.6.
复制代码

案例
   基本用法
  最简单的 http2_max_requests 用法是指定一个详细的哀求数量:
  1. http {
  2.     server {
  3.         listen 443 ssl http2;
  4.         server_name example.com;
  5.         ssl_certificate /etc/nginx/ssl/example.com.crt;
  6.         ssl_certificate_key /etc/nginx/ssl/example.com.key;
  7.         location / {
  8.             proxy_pass http://backend;
  9.             http2_max_requests 500;
  10.         }
  11.     }
  12. }
复制代码
在这个例子中:

   动态设置不同设置
  你可以根据不同的域名或服务器块动态设置不同的最大哀求数:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example1.com;
  4.     ssl_certificate /etc/nginx/ssl/example1.com.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example1.com.key;
  6.     location / {
  7.         proxy_pass http://backend_example1;
  8.         http2_max_requests 500;
  9.     }
  10. }
  11. server {
  12.     listen 443 ssl http2;
  13.     server_name example2.com;
  14.     ssl_certificate /etc/nginx/ssl/example2.com.crt;
  15.     ssl_certificate_key /etc/nginx/ssl/example2.com.key;
  16.     location / {
  17.         proxy_pass http://backend_example2;
  18.         http2_max_requests 2000;
  19.     }
  20. }
复制代码
在这个例子中:

注意事项

http2_push

http2_push 指令用于启用HTTP/2服务器推送功能。这个指令帮助提前推送资源到客户端,减少页面加载时间。
  1. Syntax:        http2_push uri | off;
  2. Default:        http2_push off;
  3. Context:        http, server, location
  4. This directive appeared in version 1.13.9.
复制代码

案例
   基本用法
  最简单的 http2_push 用法是指定一个详细的资源URI:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.com.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.com.key;
  6.     location / {
  7.         root /var/www/html;
  8.         http2_push /css/style.css;
  9.     }
  10. }
复制代码
在这个例子中:

   动态设置不同设置
  你可以根据不同的域名或服务器块动态设置不同的推送资源:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example1.com;
  4.     ssl_certificate /etc/nginx/ssl/example1.com.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example1.com.key;
  6.     location / {
  7.         root /var/www/html_example1;
  8.         http2_push /css/style1.css;
  9.     }
  10. }
  11. server {
  12.     listen 443 ssl http2;
  13.     server_name example2.com;
  14.     ssl_certificate /etc/nginx/ssl/example2.com.crt;
  15.     ssl_certificate_key /etc/nginx/ssl/example2.com.key;
  16.     location / {
  17.         root /var/www/html_example2;
  18.         http2_push /css/style2.css;
  19.     }
  20. }
复制代码
在这个例子中:

注意事项

http2_push_preload

http2_push_preload 指令用于启用对 <link rel="preload"> 标签的支持,并将其转换为HTTP/2服务器推送。这个指令帮助自动推送预加载的资源。
  1. Syntax:        http2_push_preload on | off;
  2. Default:        http2_push_preload off;
  3. Context:        http, server, location
  4. This directive appeared in version 1.13.9.
复制代码

案例
   基本用法
  最简单的 http2_push_preload 用法是指定是否启用预加载支持:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.com.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.com.key;
  6.     location / {
  7.         root /var/www/html;
  8.         http2_push_preload on;
  9.     }
  10. }
复制代码
在这个例子中:

   动态设置不同设置
  你可以根据不同的域名或服务器块动态设置是否启用预加载支持:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example1.com;
  4.     ssl_certificate /etc/nginx/ssl/example1.com.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example1.com.key;
  6.     location / {
  7.         root /var/www/html_example1;
  8.         http2_push_preload on;
  9.     }
  10. }
  11. server {
  12.     listen 443 ssl http2;
  13.     server_name example2.com;
  14.     ssl_certificate /etc/nginx/ssl/example2.com.crt;
  15.     ssl_certificate_key /etc/nginx/ssl/example2.com.key;
  16.     location / {
  17.         root /var/www/html_example2;
  18.         http2_push_preload off;
  19.     }
  20. }
复制代码
在这个例子中:

注意事项

http2_recv_buffer_size

http2_recv_buffer_size 指令用于设置接收HTTP/2帧时的缓冲区巨细。这个指令帮助优化HTTP/2协议的数据传输服从。
  1. Syntax:        http2_recv_buffer_size size;
  2. Default:        http2_recv_buffer_size 256k;
  3. Context:        http
复制代码

案例
   基本用法
  最简单的 http2_recv_buffer_size 用法是指定一个详细的缓冲区巨细:
  1. http {
  2.     http2_recv_buffer_size 512k;
  3.     server {
  4.         listen 443 ssl http2;
  5.         server_name example.com;
  6.         ssl_certificate /etc/nginx/ssl/example.com.crt;
  7.         ssl_certificate_key /etc/nginx/ssl/example.com.key;
  8.         location / {
  9.             root /var/www/html;
  10.         }
  11.     }
  12. }
复制代码
在这个例子中:

   动态设置不同设置
  由于 http2_recv_buffer_size 只能在 http 上下文中设置,因此不能针对不同的服务器块单独设置。你可以在主设置文件中统一设置:
  1. http {
  2.     http2_recv_buffer_size 1m;
  3.     server {
  4.         listen 443 ssl http2;
  5.         server_name example1.com;
  6.         ssl_certificate /etc/nginx/ssl/example1.com.crt;
  7.         ssl_certificate_key /etc/nginx/ssl/example1.com.key;
  8.         location / {
  9.             root /var/www/html_example1;
  10.         }
  11.     }
  12.     server {
  13.         listen 443 ssl http2;
  14.         server_name example2.com;
  15.         ssl_certificate /etc/nginx/ssl/example2.com.crt;
  16.         ssl_certificate_key /etc/nginx/ssl/example2.com.key;
  17.         location / {
  18.             root /var/www/html_example2;
  19.         }
  20.     }
  21. }
复制代码
在这个例子中:

注意事项

http2_recv_timeout

http2_recv_timeout 指令用于设置 HTTP/2 连接中接收数据的超时时间。
  1. Syntax:        http2_recv_timeout time;
  2. Default:        http2_recv_timeout 30s;
  3. Context:        http, server
复制代码

案例
   基本用法
  最简单的 http2_recv_timeout 用法是指定超时时间:
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     # 设置 HTTP/2 接收数据的超时时间为 60 秒
  7.     http2_recv_timeout 60s;
  8.     location / {
  9.         proxy_pass http://backend.example.com;
  10.     }
  11. }
复制代码
在这个例子中:

   使用默认值
  你可以选择使用默认值(30 秒):
  1. server {
  2.     listen 443 ssl http2;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     # 使用默认的超时时间(30 秒)
  7.     http2_recv_timeout 30s;
  8.     location / {
  9.         proxy_pass http://backend.example.com;
  10.     }
  11. }
复制代码
在这个例子中:

注意事项

2.2 ngx_http_v3_module

ngx_http_v3_module 是 Nginx 的一个模块,用于支持 HTTP/3 协议。HTTP/3 是基于 QUIC(Quick UDP Internet Connections)传输协议的新一代 HTTP 协议,旨在进步网络连接的性能和可靠性,特别是在高延迟和不稳定的网络情况中。
主要功能

设置要求
为了启用 ngx_http_v3_module 模块,你必要满足以下条件:
常用指令

使用示例
以下是一些简化的设置示例,展示了如何使用 ngx_http_v3_module 来启用 HTTP/3 支持。
   基本 HTTP/3 设置
  假设你盼望为你的网站启用 HTTP/3 支持:
  1. server {
  2.     listen 443 quic reuseport ssl http2;
  3.     listen [::]:443 quic reuseport ssl http2;
  4.     server_name example.com;
  5.     ssl_certificate /etc/nginx/ssl/example_com.crt;
  6.     ssl_certificate_key /etc/nginx/ssl/example_com.key;
  7.     ssl_protocols TLSv1.2 TLSv1.3;
  8.     ssl_ciphers HIGH:!aNULL:!MD5;
  9.     location / {
  10.         root /var/www/html;
  11.         index index.html index.htm;
  12.     }
  13. }
复制代码
在这个例子中:

   详细设置 QUIC 参数
  你可以进一步设置 QUIC 相关参数以优化性能:
  1. server {
  2.     listen 443 quic reuseport ssl http2;
  3.     listen [::]:443 quic reuseport ssl http2;
  4.     server_name example.com;
  5.     ssl_certificate /etc/nginx/ssl/example_com.crt;
  6.     ssl_certificate_key /etc/nginx/ssl/example_com.key;
  7.     ssl_protocols TLSv1.2 TLSv1.3;
  8.     ssl_ciphers HIGH:!aNULL:!MD5;
  9.     quic {
  10.         max_idle_timeout 60s;
  11.         initial_max_data 1048576;
  12.         initial_max_stream_data_bidi_local 262144;
  13.         initial_max_stream_data_bidi_remote 262144;
  14.         initial_max_stream_data_uni 262144;
  15.         initial_max_streams_bidi 100;
  16.         initial_max_streams_uni 100;
  17.         ack_delay_exponent 3;
  18.         max_ack_delay 25ms;
  19.     }
  20.     location / {
  21.         root /var/www/html;
  22.         index index.html index.htm;
  23.     }
  24. }
复制代码
在这个例子中:

   逼迫重定向 HTTP 到 HTTPS
  为了确保全部哀求都通过 HTTPS 处理,可以设置 HTTP 哀求自动重定向到 HTTPS:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     # 强制重定向到 HTTPS
  5.     return 301 https://$host$request_uri;
  6. }
  7. server {
  8.     listen 443 quic reuseport ssl http2;
  9.     listen [::]:443 quic reuseport ssl http2;
  10.     server_name example.com;
  11.     ssl_certificate /etc/nginx/ssl/example_com.crt;
  12.     ssl_certificate_key /etc/nginx/ssl/example_com.key;
  13.     ssl_protocols TLSv1.2 TLSv1.3;
  14.     ssl_ciphers HIGH:!aNULL:!MD5;
  15.     quic {
  16.         max_idle_timeout 60s;
  17.         initial_max_data 1048576;
  18.     }
  19.     location / {
  20.         root /var/www/html;
  21.         index index.html index.htm;
  22.     }
  23. }
复制代码
在这个例子中:

注意事项

通过合理设置 ngx_http_v3_module,你可以为你的网站提供更快、更可靠的连接体验。
2.2.1 指令列表

http3

http3 指令用于启用或禁用 HTTP/3 支持。
  1. Syntax:        http3 on | off;Default:        http3 on;
  2. Context:        http, server
复制代码

案例
   启用 HTTP/3
  最简单的 http3 用法是启用 HTTP/3 支持:
  1. server {    listen 443 ssl http3;    server_name example.com;    ssl_certificate /etc/nginx/ssl/example.crt;    ssl_certificate_key /etc/nginx/ssl/example.key;    # 启用 HTTP/3 支持    http3 on;
  2.     location / {        proxy_pass http://backend.example.com;    }}
复制代码
在这个例子中:

   禁用 HTTP/3
  你可以选择禁用 HTTP/3 支持:
  1. server {
  2.     listen 443 ssl;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     # 禁用 HTTP/3 支持
  7.     http3 off;
  8.     location / {
  9.         proxy_pass http://backend.example.com;
  10.     }
  11. }
复制代码
在这个例子中:

注意事项

http3_hq

http3_hq 指令用于启用或禁用 HTTP/3 的 HQ(Header Compression)功能。
  1. Syntax:        http3_hq on | off;
  2. Default:        http3_hq off;
  3. Context:        http, server
复制代码

案例
   启用 HQ 功能
  最简单的 http3_hq 用法是启用 HQ 功能:
  1. server {    listen 443 ssl http3;    server_name example.com;    ssl_certificate /etc/nginx/ssl/example.crt;    ssl_certificate_key /etc/nginx/ssl/example.key;    # 启用 HTTP/3 支持    http3 on;
  2.     # 启用 HTTP/3 的 HQ 功能    http3_hq on;    location / {        proxy_pass http://backend.example.com;    }}
复制代码
在这个例子中:

   禁用 HQ 功能
  你可以选择禁用 HQ 功能:
  1. server {    listen 443 ssl http3;    server_name example.com;    ssl_certificate /etc/nginx/ssl/example.crt;    ssl_certificate_key /etc/nginx/ssl/example.key;    # 启用 HTTP/3 支持    http3 on;
  2.     # 禁用 HTTP/3 的 HQ 功能    http3_hq off;    location / {        proxy_pass http://backend.example.com;    }}
复制代码
在这个例子中:

注意事项

http3_max_concurrent_streams

http3_max_concurrent_streams 指令用于设置 HTTP/3 连接中最大并发流的数量。
  1. Syntax:        http3_max_concurrent_streams number;
  2. Default:        http3_max_concurrent_streams 128;
  3. Context:        http, server
复制代码

案例
   基本用法
  最简单的 http3_max_concurrent_streams 用法是指定最大并发流的数量:
  1. server {    listen 443 ssl http3;    server_name example.com;    ssl_certificate /etc/nginx/ssl/example.crt;    ssl_certificate_key /etc/nginx/ssl/example.key;    # 启用 HTTP/3 支持    http3 on;
  2.     # 设置最大并发流数量为 256    http3_max_concurrent_streams 256;    location / {        proxy_pass http://backend.example.com;    }}
复制代码
在这个例子中:

   使用默认值
  你可以选择使用默认值(128):
  1. server {    listen 443 ssl http3;    server_name example.com;    ssl_certificate /etc/nginx/ssl/example.crt;    ssl_certificate_key /etc/nginx/ssl/example.key;    # 启用 HTTP/3 支持    http3 on;
  2.     # 使用默认的最大并发流数量(128)    http3_max_concurrent_streams 128;    location / {        proxy_pass http://backend.example.com;    }}
复制代码
在这个例子中:

注意事项

http3_stream_buffer_size

http3_stream_buffer_size 指令用于设置 HTTP/3 流的缓冲区巨细。这影响着数据在传输过程中的缓冲服从和性能,特别是在高并发场景下。
  1. Syntax:        http3_stream_buffer_size size;
  2. Default:        http3_stream_buffer_size 64k;
  3. Context:        http, server
复制代码

案例
   设置较大的缓冲区
  假设我们盼望增长 HTTP/3 流的缓冲区巨细以进步处理大文件时的性能:
  1. http {
  2.     server {
  3.         listen 80 http3;
  4.         server_name example.com;
  5.         # 增加 HTTP/3 流的缓冲区大小到 128KB
  6.         http3_stream_buffer_size 128k;
  7.     }
  8. }
复制代码
  使用默认的缓冲区巨细
  如果我们盼望使用默认的64KB缓冲区巨细:
  1. http {
  2.     server {
  3.         listen 80 http3;
  4.         server_name example.com;
  5.         # 使用默认的 64KB 缓冲区大小
  6.         http3_stream_buffer_size 64k;
  7.     }
  8. }
复制代码
注意事项

quic_active_connection_id_limit

quic_active_connection_id_limit 指令用于设置 QUIC 协议中允许的活动连接 ID 的最大数量。这有助于控制服务器端的资源消耗,并防止滥用。
  1. Syntax:        quic_active_connection_id_limit number;
  2. Default:        quic_active_connection_id_limit 2;
  3. Context:        http, server
复制代码

案例
   设置较大的连接 ID 限制
  假设我们盼望增长允许的活动连接 ID 数量以支持更多的并发连接:
  1. http {
  2.     server {
  3.         listen 80 quic;
  4.         server_name example.com;
  5.         # 增加允许的活动连接 ID 数量到 5
  6.         quic_active_connection_id_limit 5;
  7.     }
  8. }
复制代码
  使用默认的连接 ID 限制
  如果我们盼望使用默认的2个活动连接 ID:
  1. http {
  2.     server {
  3.         listen 80 quic;
  4.         server_name example.com;
  5.         # 使用默认的 2 个活动连接 ID
  6.         quic_active_connection_id_limit 2;
  7.     }
  8. }
复制代码
注意事项

quic_bpf

quic_bpf 指令用于启用或禁用 BPF(Berkeley Packet Filter)支持,主要用于高级网络调试和监控。BPF 可以帮助捕获和分析网络流量,但在大多数情况下不必要启用。
  1. Syntax:        quic_bpf on | off;
  2. Default:        quic_bpf off;
  3. Context:        main
复制代码

案例
   启用 BPF 支持
  假设我们必要启用 BPF 支持举行高级网络调试:
  1. main {
  2.     # 启用 BPF 支持
  3.     quic_bpf on;
  4. }
复制代码
  禁用 BPF 支持
  如果我们不必要 BPF 支持:
  1. main {
  2.     # 禁用 BPF 支持(默认行为)
  3.     quic_bpf off;
  4. }
复制代码
注意事项

quic_gso

quic_gso 指令用于启用或禁用 GSO(Generic Segmentation Offload)支持。GSO 是一种网络优化技能,通过减少内核中断次数来进步网络性能。
  1. Syntax:        quic_gso on | off;
  2. Default:        quic_gso off;
  3. Context:        http, server
复制代码

案例
   启用 GSO 支持
  假设我们盼望启用 GSO 支持以进步网络性能:
  1. http {
  2.     server {
  3.         listen 80 quic;
  4.         server_name example.com;
  5.         # 启用 GSO 支持
  6.         quic_gso on;
  7.     }
  8. }
复制代码
  禁用 GSO 支持
  如果我们不盼望启用 GSO 支持:
  1. http {
  2.     server {
  3.         listen 80 quic;
  4.         server_name example.com;
  5.         # 禁用 GSO 支持(默认行为)
  6.         quic_gso off;
  7.     }
  8. }
复制代码
注意事项

quic_host_key

quic_host_key 指令用于指定 QUIC 协议使用的主秘密钥文件。QUIC 是一种基于 UDP 的传输协议,旨在进步网络连接的安全性和性能。
  1. Syntax:        quic_host_key file;
  2. Default: —
  3. Context: http, server
复制代码

案例
   基本用法
  最简单的 quic_host_key 用法是指定主秘密钥文件路径:
  1. server {
  2.     listen 443 quic ssl;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     # 指定 QUIC 主机密钥文件路径
  7.     quic_host_key /etc/nginx/ssl/quic_host_key.pem;
  8.     location / {
  9.         proxy_pass http://backend;
  10.     }
  11. }
复制代码
在这个例子中:

注意事项

quic_retry

quic_retry 指令用于控制是否启用 QUIC 协议的重试机制。重试机制有助于防止中心人攻击(MITM)和其他潜伏的安全威胁。
  1. Syntax:        quic_retry on | off;
  2. Default: quic_retry off;
  3. Context: http, server
复制代码

案例
   基本用法
  最简单的 quic_retry 用法是启用或禁用重试机制:
  1. server {
  2.     listen 443 quic ssl;
  3.     server_name example.com;
  4.     ssl_certificate /etc/nginx/ssl/example.crt;
  5.     ssl_certificate_key /etc/nginx/ssl/example.key;
  6.     # 启用 QUIC 重试机制
  7.     quic_retry on;
  8.     location / {
  9.         proxy_pass http://backend;
  10.     }
  11. }
复制代码
在这个例子中:

注意事项

2.3 ngx_http_xslt_module

ngx_http_xslt_module 是 Nginx 的一个模块,用于在将 XML 数据发送给客户端之前,使用 XSLT(Extensible Stylesheet Language Transformations)样式表对 XML 举行转换。这个模块使得 Nginx 能够作为一个轻量级的中心层,在处理 XML 数据时举行格式化和转换,从而天生更易读或更适合特定应用需求的输出。
主要功能

常用指令
以下是 ngx_http_xslt_module 中一些常用的指令及其阐明:

使用示例
以下是一些详细的设置示例,展示了如何使用 ngx_http_xslt_module 对 XML 数据举行转换。
   基本设置
  假设你有一个 XML 文件,并盼望使用 XSLT 样式表对其举行转换:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /xml {
  5.         # 设置根目录
  6.         root /var/www/data;
  7.         # 启用 XSLT 转换
  8.         xslt_stylesheet /etc/nginx/stylesheet.xsl;
  9.         # 设置需要进行 XSLT 转换的 MIME 类型
  10.         xslt_types application/xml;
  11.     }
  12. }
复制代码
在这个例子中:

   动态加载 XSLT 样式表
  你可以根据哀求的不同动态选择不同的 XSLT 样式表:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /xml {
  5.         # 设置根目录
  6.         root /var/www/data;
  7.         # 根据请求参数选择不同的 XSLT 样式表
  8.         if ($arg_style = "mobile") {
  9.             xslt_stylesheet /etc/nginx/mobile.xsl;
  10.         }
  11.         if ($arg_style = "desktop") {
  12.             xslt_stylesheet /etc/nginx/desktop.xsl;
  13.         }
  14.         # 设置需要进行 XSLT 转换的 MIME 类型
  15.         xslt_types application/xml;
  16.     }
  17. }
复制代码
在这个例子中:

   通报参数到 XSLT 样式表
  你可以将哀求参数通报给 XSLT 样式表,以便在转换过程中使用这些参数:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /xml {
  5.         # 设置根目录
  6.         root /var/www/data;
  7.         # 启用 XSLT 转换并传递参数
  8.         xslt_stylesheet /etc/nginx/stylesheet.xsl;
  9.         xslt_parameters $lang $theme;
  10.         # 设置需要进行 XSLT 转换的 MIME 类型
  11.         xslt_types application/xml;
  12.     }
  13. }
复制代码
在这个例子中:

注意事项

2.3.1 指令列表

xml_entities

xml_entities 指令用于指定 XML 实体文件的路径。XML 实体文件界说了自界说实体,这些实体可以在处理 XML 文档时被引用。
  1. Syntax:        xml_entities path;
  2. Default: —
  3. Context: http, server, location
复制代码

案例
   基本用法
  最简单的 xml_entities 用法是指定 XML 实体文件路径:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /xml {
  5.         # 指定 XML 实体文件路径
  6.         xml_entities /etc/nginx/xml/entities.dtd;
  7.         # 处理 XML 请求
  8.         proxy_pass http://backend;
  9.     }
  10. }
复制代码
在这个例子中:

注意事项

xslt_last_modified

xslt_last_modified 指令用于控制是否启用 XSLT 输出的末了修改时间头信息。这有助于优化缓存计谋和进步性能。
  1. Syntax:        xslt_last_modified on | off;
  2. Default: xslt_last_modified off;
  3. Context: http, server, location
  4. This directive appeared in version 1.5.1.
复制代码

案例
   基本用法
  最简单的 xslt_last_modified 用法是启用或禁用末了修改时间头信息:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /xml-transform {
  5.         # 启用 XSLT 输出的最后修改时间头信息
  6.         xslt_last_modified on;
  7.         # 指定 XSLT 样式表
  8.         xslt_stylesheet /etc/nginx/xslt/style.xsl;
  9.         # 处理 XML 请求并应用 XSLT 转换
  10.         proxy_pass http://backend;
  11.     }
  12. }
复制代码
在这个例子中:

注意事项

xslt_param

xslt_param 用于在 XSLT 转换过程中通报参数给 XSLT 样式表。这允许你在转换 XML 数据时动态地向样式表通报值,从而实现更灵活的转换逻辑。
  1. Syntax: xslt_param parameter value;
  2. Default: —
  3. Context: http, server, location
  4. This directive appeared in version 1.1.18.
复制代码

案例
   基本用法
  最简单的 xslt_param 用法是指定参数及其值:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /transform {
  5.         root /var/www/xml;
  6.         xslt_stylesheet /etc/nginx/xslt/transform.xsl;
  7.         xslt_param title "Example Title";  # 传递参数 'title' 及其值 'Example Title'
  8.     }
  9. }
复制代码
在这个例子中,设置了 xslt_param title "Example Title",这意味着在实行 XSLT 转换时,将通报一个名为 title 的参数,并将其值设置为 "Example Title"。
   多个参数
  根据实际需求通报多个参数:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /transform {
  5.         root /var/www/xml;
  6.         xslt_stylesheet /etc/nginx/xslt/transform.xsl;
  7.         xslt_param title "Example Title";  # 传递第一个参数
  8.         xslt_param author "John Doe";      # 传递第二个参数
  9.     }
  10. }
复制代码
在这个例子中,通报了两个参数:title 和 author。
注意事项

xslt_string_param

xslt_string_param 与 xslt_param 类似,但专门用于通报字符串类型的参数。它允许你明确指定通报的参数类型为字符串。
  1. Syntax: xslt_string_param parameter value;
  2. Default: —
  3. Context: http, server, location
  4. This directive appeared in version 1.1.18.
复制代码

案例
   基本用法
  最简单的 xslt_string_param 用法是指定参数及其字符串值:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /transform {
  5.         root /var/www/xml;
  6.         xslt_stylesheet /etc/nginx/xslt/transform.xsl;
  7.         xslt_string_param title "Example Title";  # 传递字符串参数 'title'
  8.     }
  9. }
复制代码
在这个例子中,设置了 xslt_string_param title "Example Title",这意味着在实行 XSLT 转换时,将通报一个名为 title 的字符串参数,并将其值设置为 "Example Title"。
   多个字符串参数
  根据实际需求通报多个字符串参数:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /transform {
  5.         root /var/www/xml;
  6.         xslt_stylesheet /etc/nginx/xslt/transform.xsl;
  7.         xslt_string_param title "Example Title";  # 传递第一个字符串参数
  8.         xslt_string_param author "John Doe";      # 传递第二个字符串参数
  9.     }
  10. }
复制代码
在这个例子中,通报了两个字符串参数:title 和 author。
注意事项

xslt_stylesheet

xslt_stylesheet 用于指定用于 XML 转换的 XSLT 样式表文件路径,并可以通报参数给样式表。这使得你可以将 XML 数据转换为其他格式(如 HTML、文本等)。
  1. Syntax: xslt_stylesheet stylesheet [parameter=value ...];
  2. Default: —
  3. Context: location
复制代码

案例
   基本用法
  最简单的 xslt_stylesheet 用法是指定样式表文件路径:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /transform {
  5.         root /var/www/xml;
  6.         xslt_stylesheet /etc/nginx/xslt/transform.xsl;  # 指定样式表文件路径
  7.     }
  8. }
复制代码
在这个例子中,指定了 XSLT 样式表文件路径 /etc/nginx/xslt/transform.xsl。
   通报参数
  根据实际需求通报参数给样式表:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /transform {
  5.         root /var/www/xml;
  6.         xslt_stylesheet /etc/nginx/xslt/transform.xsl title="Example Title" author="John Doe";  # 传递参数给样式表
  7.     }
  8. }
复制代码
在这个例子中,通报了两个参数:title 和 author 给样式表。
   完整设置示例
  结合多个指令举行完整设置:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /transform {
  5.         root /var/www/xml;
  6.         xslt_stylesheet /etc/nginx/xslt/transform.xsl title="Example Title" author="John Doe";  # 指定样式表并传递参数
  7.         xslt_param subtitle "Subtitle Text";  # 额外传递参数
  8.     }
  9.     location /another_transform {
  10.         root /var/www/xml;
  11.         xslt_stylesheet /etc/nginx/xslt/another_transform.xsl;  # 不同的样式表
  12.     }
  13. }
复制代码
在这个例子中:

注意事项

xslt_types

xslt_types 用于指定哪些 MIME 类型的响应应被转换为 XSLT 样式表处理。默认情况下,只有 text/xml 类型的响应会被处理。
  1. Syntax: xslt_types mime-type ...;
  2. Default: xslt_types text/xml;
  3. Context: http, server, location
复制代码

案例
   基本用法
  最简单的 xslt_types 用法是指定处理的 MIME 类型:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /transform {
  5.         root /var/www/xml;
  6.         xslt_stylesheet /etc/nginx/xslt/transform.xsl;
  7.         xslt_types application/xml text/xml;  # 处理多种 MIME 类型
  8.     }
  9. }
复制代码
在这个例子中,设置了 xslt_types application/xml text/xml,这意味着除了默认的 text/xml 类型外,还将处理 application/xml 类型的响应。
   扩展处理类型
  根据实际需求扩展处理的 MIME 类型:
  1. server {
  2.     listen 80;
  3.     server_name example.com;
  4.     location /transform {
  5.         root /var/www/xml;
  6.         xslt_stylesheet /etc/nginx/xslt/transform.xsl;
  7.         xslt_types text/xml application/xml text/plain;  # 处理更多的 MIME 类型
  8.     }
  9. }
复制代码
在这个例子中,处理了三种 MIME 类型:text/xml、application/xml 和 text/plain。
注意事项


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4