前言:
今天我们对“nginx根据host转发”都比较重视,大家都想要了解一些“nginx根据host转发”的相关知识。那么小编在网摘上搜集了一些关于“nginx根据host转发””的相关资讯,希望你们能喜欢,各位老铁们一起来学习一下吧!前言
前面咱们介绍了Minio和Nginx
Minio负载均衡配置
直接上nginx.conf配置吧
upstream minio { ip_hash; server 192.168.124.241:9001; server 192.168.124.241:9002; server 192.168.124.241:9003; server 192.168.124.241:9004;}server { listen 9999; server_name localhost; ignore_invalid_headers off; client_max_body_size 0; proxy_buffering off; location / { # proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Host $host:$server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; client_body_buffer_size 10M; client_max_body_size 10G; proxy_buffers 1024 4k; proxy_read_timeout 300; proxy_next_upstream error timeout http_404; # Default is HTTP/1, keepalive is only enabled in HTTP/1.1 proxy_http_version 1.1; proxy_set_header Connection ""; proxy_pass ; }}
细心的小伙伴可以发现,前面的Nginx总结中有上面的配置,哈哈
SignatureDoesNotMatch
开开心心地搞到最后了,本以为大功告成,却偏偏报错了(关键配置上面都注释了),emmmm…………
minIO Docker 使用Nginx代理后出现:
minio.error.SignatureDoesNotMatch: SignatureDoesNotMatch:The request signature we calculated does not match the signature you provided
心态崩了.....使用可视化客户端上传删除什么都没有问题,偏偏使用API的时候报错了。
查了一下发现是这样的:
签名不正确,后来发现和nginx反向代理在做转发的时候所携带的header有关系.
minio在校验signature是否有效的时候,必须从http header里面获取host,而我们这里没有对header作必要的处理.如果源请求未携带这个头,则minio处无法获取请求头中的host,目前我这里测试看请求有携带Host,这里的机制问题出在nginx,nginx没有把这个host转发过去,而用ip的时候Host为 ip:port,这种情况是正常的,这应该和nginx的默认配置proxy_set_header Host $http_host有关系。
如果不想改变请求头“Host”的值,可以这样来设置:
proxy_set_header Host httphost;但是,如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。这种情况下,更好的方式是使用httphost;但是,如果客户端请求头中没有携带这个头部,那么传递到后端服务器的请求也不含这个头部。这种情况下,更好的方式是使用host变量——它的值在请求包含“Host”请求头时为“Host”字段的值,在请求未携带“Host”请求头时为虚拟主机的主域名:
我们这里的nginx.conf需要添加下面代码
proxy_set_header Host $host;
$host代表的是当前虚拟主机的host,即上面配置的oss.allcmem.com
配置了host后还是相同的错误.....
查了一下,发现原来Nginx使用的默认连接方式是HTTP/1......
添加配置:
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1proxy_http_version 1.1;
果然,上传文件没有问题了.终于解决了。
更详细的配置大家参考官网:
标签: #nginx根据host转发