NGINX:“客户端在读取客户端请求行时发送了无效方法”

ama*_*sta 9 nginx docker alpine-linux

为 Nginx 设置 SSL 并发出请求后,我收到带有神秘消息的乱码响应client sent invalid method while reading client request line

我在 Alpine Docker 容器中使用 Let's Encrypt 生成了证书(对于上下文,与错误无关)。

这是一个屏幕截图:

客户端在读取客户端请求行时发送了无效方法

简化的 Nginx 虚拟主机配置如下:

server {

    listen 443;

    ssl_certificate /vsdroot/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /vsdroot/letsencrypt/live/yourdomain.com/privkey.pem;

    ssl_dhparam /vsdroot/letsencrypt/ssl-dhparams.pem;
    include /vsdroot/letsencrypt/options-ssl-nginx.conf;

    root /vsdroot;

    location / {
        index index.html;
    }
Run Code Online (Sandbox Code Playgroud)

安全注意事项:我的 SSL 密钥位于 Nginx 文档根目录内,仅用于本地测试,请勿在生产环境或任何地方执行此操作!

ama*_*sta 9

我缩小了导致问题的指令范围,并能够通过修改listen服务器块上的行来一致地复制问题。

再生产。产生乱码和client sent invalid method while reading client request line错误。

listen线

server {
    listen 443;
Run Code Online (Sandbox Code Playgroud)

错误略有不同,但仍然没有骰子:

server {
    listen ssl;
Run Code Online (Sandbox Code Playgroud)

产品

错误截图

...

固定的。错误消失,我可以满足我的请求(纯 htmlfastcgi_pass等)。

配置:

server {
    listen 443 ssl;
Run Code Online (Sandbox Code Playgroud)

...

利润截图:

我花了比我愿意承认的更多的时间来将神秘错误缩小到单个listen指令。