【发布时间】:2025-12-10 13:30:02
【问题描述】:
我正在尝试在我的 nginx 配置中设置 proxy_protocol。我的服务器位于 AWS 负载均衡器 (ELB) 后面,并且我已经为端口 80 和 443 启用了代理协议。
但是,这是我在访问服务器时得到的结果:
broken header: "��/��
'���\DW�Vc�A{����
�@��kj98���=5���g@32ED�</A
" while reading PROXY protocol, client: 172.31.12.223, server: 0.0.0.0:443
这是从 nginx 错误日志中直接复制粘贴 - 奇怪的字符等等。
这是我的 nginx 配置中的一个片段:
server {
listen 80 proxy_protocol;
set_real_ip_from 172.31.0.0/20; # Coming from ELB
real_ip_header proxy_protocol;
return 301 https://$http_host$request_uri;
}
server {
listen 443 ssl proxy_protocol;
server_name *.....com
ssl_certificate /etc/ssl/<....>;
ssl_certificate_key /etc/ssl/<....?;
ssl_prefer_server_ciphers On;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4;
ssl_session_cache shared:SSL:10m;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_stapling on;
ssl_stapling_verify on;
...
我在网上找不到有关此问题的任何帮助。其他人也遇到过错误的标头问题,但标头错误的错误始终是可读的——它们看起来不像对我来说是经过编码的。
有什么想法吗?
【问题讨论】:
-
看起来这是在 443 上。它在端口 80 上如何做?另外,ELB 是否处于 HTTPS(不是 TCP)模式?
-
端口 80 由第一个块处理 - 它只是重定向到 https。它处于 TCP/SSL 模式,因此 websockets 工作。
-
同样的问题。您是否偶然使用了 Kubernetes?我正在尝试将其设置到 Kubernetes 集群中,并认为
kube-proxy可能与它有关。 -
我遇到了同样的问题。我尝试了我能想到的一切,但没有解决方案。有人有更新吗?
标签: amazon-web-services nginx amazon-elb