这是 nghttpx 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
nghttpx - HTTP/2 代理
概要
nghttpx [选项]... [ ]
商品描述
HTTP/2、HTTP/1 和 SPDY 的反向代理。
设置服务器私钥的路径。 需要,除非 -p, - 客户 or
--前端-无-tls 给出。
设置服务器证书的路径。 需要,除非 -p, - 客户 or
--前端-无-tls 给出。 要使 OCSP 装订工作,这必须是绝对的
路径。
配置
选项分为几组。
连接
-b, --后端=( , |Unix: )[; [:...]]
设置后端主机和端口。 多个后端地址被接受
重复这个选项。 UNIX域套接字可以通过前缀路径指定
名称带有“unix:”(例如,unix:/var/run/backend.sock)。
可选地,如果s 给出,后端地址仅在请求时使用
匹配模式。 如果 -s or -p 用来, s 被忽略。 这
模式匹配与 Go 的 net/http 包中的 ServeMux 紧密设计
编程语言。 由路径、主机 + 路径或仅主机组成。 这
路径必须以“开头/"。如果以"结尾/",它匹配所有请求路径
它的子树。 要处理对目录的请求而没有尾部斜杠,
以“结尾的路径/" 也匹配仅缺少的请求路径
尾随 '/'(例如,路径“/富/“匹配请求路径”/富"). 如果没有
以“结尾/",它对请求路径执行精确匹配。如果主机是
给定,它对请求主机执行精确匹配。 如果单独提供主机,
"/" 附加到它,以便它匹配下的所有请求路径
主机(例如,指定“nghttp2.org”等于“nghttp2.org/”)。
带有主机的模式优先于只有路径的模式。 然后,更长
模式优先于较短的模式,按顺序打破平局
配置中的外观。
如果省略,"/" 用作模式,匹配所有请求
路径(包罗万象的模式)。 必须提供包罗万象的后端。
在进行匹配时,nghttpx 对模式、请求主机和
小路。 对于主机部分,它们被转换为小写。 对于路径部分,
RFC 3986 中定义的百分比编码的非保留字符被解码,并且任何
点段(“..”和“.”)被解析和删除。
例如, -b'127.0.0.1,8080;nghttp2.org/httpbin/' 匹配请求主机
“nghttp2.org”和请求路径“/httpbin/获取",但与请求不匹配
主机“nghttp2.org”和请求路径“/index.html".
倍数可以指定 s,将它们分隔为
“:”。 指定 -b'127.0.0.1,8080;nghttp2.org:www.nghttp2.org' 有
指定效果相同 -b'127.0.0.1,8080;nghttp2.org' 和
-b'127.0.0.1,8080;www.nghttp2.org'。
后端地址共享相同组合在一起形成载荷
平衡组。
自从 ”;” 和“:”用作分隔符, 不得包含这些
人物。 自从 ”;” 在shell中有特殊意义,选项值必须是
引。
默认: 127.0.0.1,80
-F, --前端=( , |Unix: )
设置前端主机和端口。 如果是“*”,它假定所有地址
包括 IPv4 和 IPv6。 UNIX 域套接字可以通过以下方式指定
用“unix:”前缀路径名(例如,unix:/var/run/nghttpx.sock)
默认: *,3000
--backlog=
设置侦听积压大小。
默认: 512
--后端-ipv4
仅将后端主机名解析为 IPv4 地址。
--后端-ipv6
仅将后端主机名解析为 IPv6 地址。
--backend-http-proxy-uri=
在表单中指定代理 URI
呻/[ : @] : . 如果代理需要身份验证,
指定和. 请注意,它们必须正确地进行百分比编码。
当后端连接为 HTTP/2 时使用此代理。 首先,做一个
CONNECT 请求到代理,它代表代理连接到后端
nghttpx。 这形成了隧道。 之后,nghttpx 执行 SSL/TLS 握手
与下游通过隧道。 连接和制作时的超时
CONNECT 请求可以通过 --后端读取超时 和
--后端写入超时 选项。
--接受代理协议
在前端连接上接受 PROXY 协议版本 1。
性能
-n, --工人=
设置工作线程的数量。
默认: 1
--读取率=
设置前端连接的最大平均读取率。 将此选项设置为 0
意味着读取速率是无限的。
默认: 0
--读取突发=
在前端连接上设置最大读取突发大小。 将 0 设置为此
选项意味着读取突发大小是无限的。
默认: 0
--写入率=
设置前端连接的最大平均写入速率。 将此选项设置为 0
意味着写入速率是无限的。
默认: 0
--write-burst=
在前端连接上设置最大写入突发大小。 将 0 设置为此
选项意味着写入突发大小是无限的。
默认: 0
--worker-read-rate=
为每个工作人员设置前端连接的最大平均读取率。 将 0 设置为
此选项表示读取速率不受限制。 尚未实施。
默认: 0
--worker-read-burst=
在每个工作人员的前端连接上设置最大读取突发大小。 将 0 设置为此
选项意味着读取突发大小是无限的。 尚未实施。
默认: 0
--worker-write-rate=
为每个工作人员设置前端连接的最大平均写入速率。 将 0 设置为
此选项表示写入速率不受限制。 尚未实施。
默认: 0
--worker-write-burst=
在每个工作人员的前端连接上设置最大写入突发大小。 将 0 设置为此
选项意味着写入突发大小是无限的。 尚未实施。
默认: 0
--worker-frontend-connections=
设置前端接受的最大同时连接数。 设置 0 表示
无限。
默认: 0
--backend-http2-connections-per-worker=
设置每个 worker 的最大后端 HTTP/2 物理连接数。
如果模式用于 -b 选项,此限制适用于每个模式组
(换句话说,每个模式组可以有最大HTTP/2 连接)。
默认值为 0,表示将值调整为
后端地址的数量。 如果使用模式,则此调整是为
每个模式组。
--backend-http1-connections-per-host=
设置每个源的最大后端并发 HTTP/1 连接数
主持人。 此选项在以下情况下有意义 -s 选项被使用。 源主机是
由请求 URI 的授权部分确定(或 :authority 头字段
对于 HTTP/2)。 限制每个前端的连接数
默认模式,使用 --backend-http1-connections-per-frontend.
默认: 8
--backend-http1-connections-per-frontend=
设置每个前端的最大后端并发 HTTP/1 连接数。
此选项仅用于默认模式。 0 表示无限制。 为了限制
HTTP/2 或 SPDY 代理模式(-s 选项)的每个主机的连接数,使用
--backend-http1-connections-per-host.
默认: 0
--rlimit-nofile=
将最大打开文件数 (RLIMIT_NOFILE) 设置为. 如果给定 0,则 nghttpx
不设置限制。
默认: 0
--backend-request-buffer=
设置用于存储后端请求的缓冲区大小。
默认: 16
--backend-response-buffer=
设置用于存储后端响应的缓冲区大小。
默认: 128
--fastopen=
为侦听套接字启用“TCP Fast Open”并限制最大长度
对于尚未完成三向握手的连接队列。
如果值为 0,则禁用快速打开。
默认: 0
超时
--frontend-http2-read-timeout=
为 HTTP/2 和 SPDY 前端连接指定读取超时。
默认: 3m
--frontend-read-timeout=
为 HTTP/1.1 前端连接指定读取超时。
默认: 1m
--frontend-write-timeout=
为所有前端连接指定写入超时。
默认: 30s
--stream-read-timeout=
指定 HTTP/2 和 SPDY 流的读取超时。 0 表示没有超时。
默认: 0
--stream-write-timeout=
指定 HTTP/2 和 SPDY 流的写入超时。 0 表示没有超时。
默认: 0
--后端读取超时=
指定后端连接的读取超时。
默认: 1m
--backend-write-timeout=
指定后端连接的写入超时。
默认: 30s
--backend-keep-alive-timeout=
为后端连接指定保持活动超时。
默认: 2s
--listener-disable-timeout=
接受连接失败后,将禁用给定的连接侦听器
多少时间。 指定 0 将禁用此功能。
默认: 30s
SSL / TLS
--密码=
设置允许的密码列表。 字符串的格式在 OpenSSL 中有描述
密码(1)。
-k, --不安全
如果出现以下情况,请不要验证后端服务器的证书 -p, - 客户 or
--http2-桥 被给予和 --后端无 tls 没有给出。
--cacert=
设置可信 CA 证书文件的路径,如果 -p, - 客户 or --http2-桥 旨在
给定和 --后端无 tls 没有给出。 该文件必须是 PEM 格式。 它可以
包含多个证书。 如果链接的 OpenSSL 配置为
加载系统范围的证书,它们在启动时加载,不管这个
选项。
--private-key-passwd-file=
包含服务器私钥密码的文件路径。 如果没有
给定并且私钥受密码保护,它将以交互方式请求。
--subcert= :
指定附加证书和私钥文件。 nghttpx 会选择
基于客户端使用 TLS SNI 指示的主机名的证书
延期。 此选项可以多次使用。 进行 OCSP 装订
工作, 必须是绝对路径。
--backend-tls-sni-field=
显式设置 TLS SNI 扩展的内容。 这将默认为
后端主机名。
--dh-param-file=
包含 PEM 格式的 DH 参数的文件路径。 如果没有这个选项,
DHE 密码套件不可用。
--npn-列表=
以逗号分隔的 ALPN 协议标识符列表,按以下顺序排序
偏爱。 这意味着最理想的协议是第一位的。 这用于
ALPN 和 NPN。 参数必须仅由一个逗号分隔,并且
任何空格都被视为协议字符串的一部分。
默认: h2,h2-16,h2-14,spdy/3.1,http/1.1
--验证客户端
要求并验证客户端证书。
--verify-client-cacert=
包含用于验证客户端证书的 CA 证书的文件路径。 这
文件必须是 PEM 格式。 它可以包含多个证书。
--client-private-key-file=
包含后端客户端中使用的客户端私钥的文件路径
身份验证。
--client-cert-file=
包含后端客户端中使用的客户端证书的文件路径
身份验证。
--tls-proto-list=
要启用的 SSL/TLS 协议的逗号分隔列表。 以下协议
可用:TLSv1.2、TLSv1.1 和 TLSv1.0。 名称匹配完成
以不区分大小写的方式。 参数必须由单个分隔
仅逗号,任何空格都被视为协议字符串的一部分。
如果客户端发布的协议列表与此列表不重叠,您将
收到错误消息“未知协议”。
默认: TLSv1.2、TLSv1.1
--tls-ticket-key-file=
包含用于构建 TLS 会话票证的随机数据的文件路径
参数。 如果 aes-128-cbc 在 --tls-票证密钥密码, 文件必须
正好包含 48 个字节。 如果 aes-256-cbc 在
--tls-票证密钥密码,该文件必须正好包含 80 个字节。 这个选项
可以重复使用以指定多个票证参数。 如果几个
文件,只有第一个密钥用于加密 TLS 会话票证。
接受其他密钥,但服务器将首先发出新的会话票
钥匙。 这允许会话密钥轮换。 请注意,密钥轮换确实
不会自动发生。 用户应重新排列文件或更改选项
值并优雅地重新启动 nghttpx。 如果打开或读取给定文件失败,
所有加载的密钥都将被丢弃,并被视为没有此选项
给。 如果未提供此选项或在打开或阅读时发生错误
一个文件,密钥在内部每 1 小时生成一次,有效期为 12
小时。 如果 nghttpx 实例之间的票证密钥共享,建议这样做
不需要。
--tls-ticket-key-memcached= ,
指定 memcached 服务器的地址来存储会话缓存。 这使
在多个 nghttpx 实例之间共享 TLS 票证密钥。 nghttpx 没有
将 TLS 票证密钥设置为 memcached。 外部票证密钥生成器是
必需的。 nghttpx 只是从 memcached 获取 TLS 票证密钥,然后使用它们,
可能会替换当前的一组键。 取决于外部 TLS 票证密钥
生成器频繁轮换密钥。 请参阅“TLS 会话票恢复”
手册页中的部分以了解 memcached 条目中的数据格式。
--tls-ticket-key-memcached-interval=
设置间隔以从 memcached 获取 TLS 票证密钥。
默认: 10 m
--tls-ticket-key-memcached-max-retry=
在放弃 TLS 票证密钥之前设置最大连续重试次数
恢复。 如果达到这个数字,则尝试被视为失败,
并且“失败”计数增加 1,这有助于
价值控制 --tls-ticket-key-memcached-max-fail 选项。
默认: 3
--tls-ticket-key-memcached-max-fail=
在禁用 TLS 票证之前设置最大连续失败次数,直到
下一次预定的密钥检索。
默认: 2
--tls-ticket-key-cipher=
指定密码来加密 TLS 会话票证。 指定 aes-128-cbc 或
aes-256-cbc。 默认使用 aes-128-cbc。
--fetch-ocsp-response-file=
fetch-ocsp-response 脚本文件的路径。 应该是绝对路径。
默认: /usr/local/share/nghttp2/fetch-ocsp-response
--ocsp-update-interval=
设置更新 OCSP 响应缓存的间隔。
默认: 4h
--无 ocsp
禁用 OCSP 装订。
--tls-session-cache-memcached= ,
指定 memcached 服务器的地址来存储会话缓存。 这使
多个 nghttpx 实例之间的共享会话缓存。
--tls-dyn-rec-warmup-threshold=
指定 TLS 动态记录大小行为的阈值大小。 在 TLS 期间
会话,在写入阈值字节数后,TLS 记录
大小将增加到允许的最大值 (16K)。 最大记录大小将
继续用于活动 TLS 会话。 后 --tls-dyn-rec-空闲超时
已过去,记录大小减少到 1300 字节。 指定 0 以始终使用
最大记录大小,与空闲时间无关。 此行为适用
到所有基于 TLS 的前端和 TLS HTTP/2 后端。
默认: 1M
--tls-dyn-rec-idle-timeout=
指定 TLS 动态记录大小行为超时。 看
--tls-dyn-rec-预热阈值 想要查询更多的信息。 此行为适用
到所有基于 TLS 的前端和 TLS HTTP/2 后端。
默认: 1s
HTTP / 2 和 SPDY
-C, --http2-max-concurrent-streams=
设置一个 HTTP/2 和 SPDY 会话中的最大并发流数。
默认: 100
--frontend-http2-window-bits=
设置 HTTP/2 SPDY 前端连接的每个流初始窗口大小。 为了
HTTP/2,大小为2** -1. 对于 SPDY,大小为 2** .
默认: 16
--frontend-http2-connection-window-bits=
设置 HTTP/2 和 SPDY 前端连接的每个连接窗口大小。
对于 HTTP/2,大小为 2** -1. 对于 SPDY,大小为 2** .
默认: 16
--前端-无-tls
在前端连接上禁用 SSL/TLS。
--backend-http2-window-bits=
将 HTTP/2 后端连接的初始窗口大小设置为 2** -1.
默认: 16
--backend-http2-connection-window-bits=
将 HTTP/2 后端连接的每个连接窗口大小设置为 2** -1.
默认: 16
--后端无 tls
在后端连接上禁用 SSL/TLS。
--http2-no-cookie-crambling
不要弄乱 cookie 标头字段。
--填充=
最多添加字节到 HTTP/2 帧负载作为填充。 指定 0 到
禁用填充。 此选项用于调试目的而不是用于
增强协议安全性。
--无服务器推送
禁用 HTTP/2 服务器推送。 默认模式和 HTTP/2 支持服务器推送
前端通过链接头字段。 如果前端和
后端是 HTTP/2(这意味着 --http2-桥 or - 客户 模式)。 在这
案例,来自后端会话的服务器推送被中继到前端,并且服务器
还支持通过链接头字段推送。 HTTP SPDY 前端没有
支持服务器推送。
时尚
(默认 模式)
通过 SSL/TLS 接受 HTTP/2、SPDY 和 HTTP/1.1。 如果 --前端-无-tls is
使用,接受 HTTP/2 和 HTTP/1.1。 传入的 HTTP/1.1 连接可以是
通过 HTTP 升级升级到 HTTP/2。 后端的协议是
HTTP / 1.1。
-是的, --http2-代理
类似于默认模式,但启用安全代理模式。
--http2-桥
类似于默认模式,但通过 SSL/TLS 与 HTTP/2 中的后端通信。 因此
传入的所有连接都转换为 HTTP/2 连接并中继到
后端。 看 --backend-http-proxy-uri 选项,如果您在代理后面并且
想要连接到外部 HTTP/2 代理。
- 客户
接受没有 SSL/TLS 的 HTTP/2 和 HTTP/1.1。 传入的 HTTP/1.1
连接可以通过 HTTP Upgrade 升级为 HTTP/2 连接。 这
后端的协议是 HTTP/2。 要使用 nghttpx 作为转发代理,请使用 -p
选项。
-p, --客户端代理
喜欢 - 客户 选项,但它也要求来自前端的请求路径必须是
绝对 URI,适合用作转发代理。
记录
-L, --日志级别=
设置日志输出的严重级别。 必须是 INFO、NOTICE、WARN 之一
错误和致命。
默认: 注意
--accesslog-file=
设置写入访问日志的路径。 要重新打开文件,请将 USR1 信号发送到 nghttpx。
--accesslog-系统日志
将访问日志发送到系统日志。 如果使用此选项, --访问日志文件 选项是
忽略了。
--accesslog-格式=
指定访问日志的格式字符串。 默认格式为组合格式。
以下变量可用:
· $remote_addr:客户端IP地址。
· $time_local:Common Log 格式的本地时间。
· $time_iso8601:ISO 8601 格式的本地时间。
· $request:HTTP 请求行。
· $status:HTTP 响应状态码。
· $body_bytes_sent:作为响应正文发送给客户端的字节数。
· $http_ : HTTP 请求头的值,其中 '_'被替换
和 '-'。
· $remote_port:客户端端口。
· $server_port:服务器端口。
· $request_time:以毫秒为单位的请求处理时间。
· $pid:正在运行的进程的PID。
· $alpn:产生响应的协议的ALPN标识符。 为了
HTTP/1,ALPN 始终是 http/1.1,无论次要版本如何。
· $ssl_cipher:用于SSL/TLS 连接的密码。
· $ssl_protocol:SSL/TLS 连接协议。
· $ssl_session_id:SSL/TLS 连接的会话ID。
· $ssl_session_reused: "r" 如果 SSL/TLS 会话被重用。 除此以外, ”。”
变量可以用“{”和“}”括起来以消除歧义(例如,
${remote_addr})。
默认: $远程地址 - - [$time_local] “$请求” $状态 $body_bytes_已发送
“$http_referer” “$http_user_agent”
--错误日志文件=
设置写入错误日志的路径。 要重新打开文件,请将 USR1 信号发送到 nghttpx。
stderr 将被重定向到错误日志文件,除非 --errorlog-系统日志 用来。
默认: /开发/标准错误
--errorlog-系统日志
将错误日志发送到系统日志。 如果使用此选项, --错误日志文件 选项是
忽略了。
--syslog-facility=
将系统日志设施设置为.
默认: 守护
HTTP
--add-x-forwarded-for
将 X-Forwarded-For 标头字段附加到下游请求。
--strip-incoming-x-forwarded-for
从入站客户端请求中去除 X-Forwarded-For 标头字段。
--添加转发=
使用逗号指定的参数附加 RFC 7239 转发头字段
分隔列表. 支持的参数有“by”、“for”、“host”和
“原型”。 默认情况下,“by”和“for”参数的值被混淆
细绳。 看 --转发者 和 --转发给 选项分别。
请注意,nghttpx 不会转换非标准的 X-Forwarded-* 标头字段
进入转发头字段,反之亦然。
--strip-传入-转发
从入站客户端请求中剥离转发的标头字段。
--forwarded-by=(混淆|ip| )
用转发头的“by”参数指定发送的参数值
场地。 如果给出“混淆”,则字符串在启动时随机生成。
如果给出“ip”,则连接的接口地址,包括端口
编号,与“by”参数一起发送。 用户还可以指定静态
混淆字符串。 限制是它必须以“_”开头,并且只能
由字符集 [A-Za-z0-9._-] 组成,如 RFC 7239 中所述。
默认: 混淆
--forwarded-for=(混淆|ip)
用Forwarded的“for”参数指定发出的参数值
头字段。 如果给出“混淆”,则为每个字符串随机生成
客户端连接。 如果给出“ip”,则为连接的远程客户端地址,
没有端口号,使用“for”参数发送。
默认: 混淆
--无通孔
不要附加到 Via 标头字段。 如果接收到 Via 头域,则保留
不变。
--无位置重写
不要重写位置头字段 --http2-桥, - 客户 和默认
模式。 为了 --http2-代理 和 --客户端代理 模式,位置头字段将
无论此选项如何,都不会更改。
--主机重写
重写主机和 :authority 头字段 --http2-桥, - 客户
和默认模式。 为了 --http2-代理 和 --客户端代理 模式,这些
无论此选项如何,标题都不会更改。
--altsvc=
指定替代服务的协议 ID、端口、主机和来源。
和是可选的。 它们在 alt-svc 标头字段中公布
仅在 HTTP/1.1 前端。 这个选项可以多次使用
指定多个替代服务。 例子: --altsvc=h2,443
--add-request-header=
指定要添加到请求标头集的附加标头字段。 这个选项只是
附加标题字段并且不会替换任何已经设置的内容。 这个选项可以
多次使用以指定多个标题字段。 例子:
--添加请求头="富:酒吧"
--add-response-header=
指定要添加到响应头集中的附加头字段。 这个选项
只是附加标题字段,不会替换任何已经设置的内容。 这个选项
可以多次使用来指定多个头字段。 例子:
--添加响应头="富:酒吧"
--header-field-buffer=
为传入的 HTTP 请求标头字段列表设置最大缓冲区大小。 这是
标题名称和值的总和(以字节为单位)。
默认: 64
--max-header-fields=
设置传入 HTTP 请求头字段的最大数量,这些字段出现在
一个请求或响应头字段列表。
默认: 100
调试
--frontend-http2-dump-request-header=
将 HTTP/2 前端收到的请求标头转储到.
输出以 HTTP/1 标头字段格式完成,每个标头块都是
后跟一个空行。 此选项不是线程安全的,不得使用
带选项 -n, 在哪里>= 2。
--frontend-http2-dump-response-header=
将从 HTTP/2 前端发送的响应头转储到在.
输出以 HTTP/1 标头字段格式完成,每个标头块都是
后跟一个空行。 此选项不是线程安全的,不得使用
带选项 -n, 在哪里>= 2。
-o, --前端框架调试
将前端的 HTTP/2 帧打印到 stderr。 此选项不是线程安全的,并且
不得与选项一起使用 -n=N,其中 N >= 2。
流程
-D, --守护进程
在后台运行。 如果 -D 使用,当前工作目录更改为
'/'.
--pid-文件=
设置保存该程序PID的路径。
--用户=
运行这个程序. 此选项旨在用于删除 root
特权。
脚本
--mruby-文件=
设置 mruby 脚本文件
杂项
--conf=
加载配置.
默认: /etc/nghttpx/nghttpx.conf
--包括=
从. 文件读取时
配置解析器遇到此选项。 此选项可多次使用
次,甚至递归。
-v, - 版
打印版本并退出。
-H, - 帮帮我
打印此帮助并退出。
这参数是一个整数和一个可选单位(例如,10K 是 10 * 1024)。 单位
是 K、M 和 G(1024 的幂)。
这参数是一个整数和一个可选单位(例如,1s 是 1 秒和 500ms
是 500 毫秒)。 单位为 h、m、s 或 ms(小时、分钟、秒和毫秒,
分别)。 如果省略单位,则使用秒作为单位。
使用 onworks.net 服务在线使用 nghttpx