标签: proxy-protocol

具有代理协议的kubernetes nginx入口以损坏的标头结束

我尝试使用代理协议在Google容器上设置nginx入口(节点端口),以便可以将真实IP转发到后端服务,但最终报头损坏。

2017/02/05 13:48:52 [error] 18#18: *2 broken header: "?????~??]H?k??m[|????I??iv.?{y??Z ??v??q???2Iu4P?z;?    o$?s????"???+?/?,?0??????/" while reading PROXY protocol, client: 10.50.0.1, server: 0.0.0.0:443
Run Code Online (Sandbox Code Playgroud)

如果没有代理协议,一切都会很好。根据https://blog.mythic-beasts.com/2016/05/09/proxy-protocol-nginx-broken-header/,这是由于使用了v2协议(二进制),但是nginx只能说v1 。有什么建议吗?

nginx kubernetes real-ip proxy-protocol

5
推荐指数
1
解决办法
1898
查看次数

来自 Python 的 AWS 网络负载均衡器后面的客户端 IP

当在网络负载均衡器后面运行套接字服务器时,实例由 IP 指定,...

server_sock = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM, proto=socket.IPPROTO_TCP)
server_sock.setblocking(False)
server_sock.bind(('', port))
server_sock.listen(socket.IPPROTO_TCP)

loop = asyncio.get_event_loop()
sock, adddress = await loop.sock_accept(server_sock)
Run Code Online (Sandbox Code Playgroud)

... 然后...

print(adddress)
Run Code Online (Sandbox Code Playgroud)

打印网络负载均衡器本身的私有 IP。

如何确定原始客户端IP?

sockets amazon-web-services python-3.x proxy-protocol

5
推荐指数
1
解决办法
1899
查看次数

验证Nginx是否在本地与代理协议一起正常使用

环境

我已经在AWS经典负载均衡器上设置了代理协议支持,如下所示该协议将流量重定向到后端nginx(使用ModSecurity配置)实例。

一切正常,我可以从开放的互联网访问我的网站。

现在,由于我的nginx配置是在AWS User Data中完成的,因此我想在实例开始提供可通过AWS Lifecycle挂钩实现的流量之前进行一些检查。

问题

在启用代理协议之前,我曾经检查过我的nginx实例是否正常,并且ModSecurity正在通过检查403此命令的响应来工作

$ curl -ks "https://localhost/foo?username=1'%20or%20'1'%20=%20'"
Run Code Online (Sandbox Code Playgroud)

启用代理协议后,我将无法再执行此操作,因为该命令失败并出现以下错误(根据此链接预期会出现此错误)。

# curl -k https://localhost -v
* About to connect() to localhost port 443 (#0)
*   Trying ::1...
* Connected to localhost (::1) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* NSS error -5938 (PR_END_OF_FILE_ERROR)
* Encountered end of file
* Closing connection 0
curl: (35) Encountered end of file

# cat …
Run Code Online (Sandbox Code Playgroud)

nginx proxy-protocol

3
推荐指数
3
解决办法
3752
查看次数