首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTTPS不支持505 HTTP版本,但HTTP不支持505 HTTP版本

HTTPS不支持505 HTTP版本,但HTTP不支持505 HTTP版本
EN

Stack Overflow用户
提问于 2018-10-05 08:43:44
回答 2查看 3.6K关注 0票数 2

我试图使用包含空格的参数调用GET api:

代码语言:javascript
复制
https://abc.xyz/search/web/buildings/search/v2/city/new%20york

端点命中负载均衡器(nginx),后者将请求重定向到合适的机器。

在响应中,我得到了505 HTTP版本不支持的错误。但是,当我使用HTTP (使用内部IP)向负载均衡器发出相同的请求时,它成功地返回响应。

以下是这两种情况的相关访问日志:

通过http调用nginx的访问日志

代码语言:javascript
复制
"GET /search/web/buildings/search/v2/city/r%20c HTTP/1.1" S=200 487 T=0.005 R=- 10.140.15.199

通过http调用时机器的访问日志

代码语言:javascript
复制
"GET /search/search/web/buildings/search/v2/city/r%20c HTTP/1.0" 200 36

上述要求运作良好。但是,当我们通过https请求时,机器中的请求就不同了(应该是d%20a而不是d a)。

通过https调用nginx的访问日志

代码语言:javascript
复制
"GET /search/web/buildings/search/v2/city/d%20a HTTP/1.1" S=505 168 T=0.001 R=- 35.200.191.89

通过https调用时机器的访问日志

代码语言:javascript
复制
"GET /search/search/web/buildings/search/v2/city/d a HTTP/1.0" 505 -

下面是相关的nginx配置:

代码语言:javascript
复制
upstream searchtomcat {
    least_conn;
        server search-1:8080;
        server search-2:8080;

}

server {

    #listen 443 ssl http2;
    listen 443; 
    client_max_body_size 100M;

...

    location ~* ^/search/(.*)$ {
        proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass  http://searchtomcat/search/search/$1;
            proxy_read_timeout 900;
    }

}

error.log中什么都没有。

机器以不同的方式接收请求的原因可能是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-05 20:10:13

整个issue.is之所以发生,是因为你的URL中的空间正在被发送给tomcat。因此,a被解释为HTTP代码,而不是HTTP/1.0。解决额外的空间问题将解决问题。

rewrite块中使用location{}可以解决这一问题。

代码语言:javascript
复制
location /search/ {
    rewrite ^/search(/.*) /search/search$1 break;

    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass  http://searchtomcat;
    proxy_read_timeout 900;
}

另外,对于httphttps服务器有不同的配置,请查看http服务器。那个似乎是正确的。

票数 3
EN

Stack Overflow用户

发布于 2022-09-11 01:16:08

当我试图在nginx上设置端口转发时,我得到了505秒。

对我来说,解决方案是将这一行添加到包含proxy_pass指令的proxy_pass块中:

代码语言:javascript
复制
proxy_http_version 1.1;

在这个主题上,我能找到的最接近文档的是这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52661688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档