我的 nghttp2.conf 后端模式有什么问题?

What is wrong with my nghttp2.conf backend pattern?

这是我的 nghttpx.conf 文件:

frontend=0.0.0.0,3000
backend=127.0.0.0,9901;;proto=h2
frontend-no-tls=yes
backend-no-tls=yes
workers=1
log-level=INFO

当我这样做时:

sudo nghttpx

抛出此错误:

28/Nov/2017:15:33:30 +0900 PID19518 [ERROR] shrpx_config.cc:1418 backend: ';' must not be used in pattern
28/Nov/2017:15:33:30 +0900 PID19518 [FATAL] shrpx.cc:1714 Failed to load configuration from /etc/nghttpx/nghttpx.conf

我的 nghttpx 配置有什么问题?

阅读 nghttpxman 页,我们看到 --backend 选项支持以下结构:

--backend=(<HOST>,<PORT>|unix:<PATH>)[;[<PATTERN>[:...]][[;<PARAM>]...]

因为您有 backend=127.0.0.0,9901;<PATTERN>,所以 ; 之后的所有内容都应该是有效的 <PATTERN>。在进一步阅读手册后,我们看到它说:

Since ";" and ":" are used as delimiter, must not contain these characters. Since ";" has special meaning in shell, the option value must be quoted.

现在,看看你的错误,它说:

shrpx_config.cc:1418 backend: ';' must not be used in pattern

表示您在模式中使用了;,这是不允许的。这与上面的手册摘录一致。

看来您的问题是您的模式中有太多 ; 个字符。目前是;proto=h2,应该是proto=h2。尝试删除多余的 ;(即它应该显示为 backend=127.0.0.0,9901;proto=h2),看看这是否有助于解决您遇到的错误。