环境
我已经在 AWS 经典负载均衡器上设置了代理协议支持,如此处所示,它将流量重定向到后端nginx(使用ModSecurity配置)实例。
一切都很好,我可以从开放的互联网上访问我的网站。
现在,由于我的 nginx 配置是在 AWS User Data中完成的,我想在实例开始提供流量之前进行一些检查,这可以通过 AWS 生命周期钩子实现。
问题
在启用代理协议之前,我曾经检查我的 nginx 实例是否健康,并且 ModSecurity 通过检查403
此命令的响应来工作
$ curl -ks "https://localhost/foo?username=1'%20or%20'1'%20=%20'"
启用代理协议后,我不能再这样做了,因为命令失败并出现以下错误,这是根据这个链接预期的。
# 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 /var/logs/nginx/error.log
2017/10/26 07:53:08 [error] 45#45: *5348 broken header: "���4"�U�8ۭ�u��%d�z��mRN�[e��<�,�
�+̩� �0��/̨��98k�̪32g�5=�/<
" while reading PROXY protocol, client: 172.17.0.1, server: 0.0.0.0:443
除了 curl 之外,我还有哪些其他选项可以以编程方式检查 nginx?也许是其他语言的东西?