微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当充当WAF背后的反向代理时,Nginx删除Content-Length标头

如何解决当充当WAF背后的反向代理时,Nginx删除Content-Length标头

我将Nginx 1.16.1作为JFrog Artifactory的反向代理,并且可以通过Web应用程序防火墙从外部网络访问它们。我正在尝试让docker客户端使用此设置。它发送HEAD请求,并等待Content-Length到图层check for the existence。现在,我看到Content-Length未包含在客户端收到的响应中。我可以使用发送curl的{​​{1}}发送相同的请求来检查它:

docker

但是,我在Artifactory的访问日志中看到它设置了此响应标头。我使用$ curl -H 'User-Agent: docker/19.03.13 go/go1.13.15 git-commit/4484c46d9d kernel/4.19.128-microsoft-standard os/linux arch/amd64 UpstreamClient(Docker-Client/19.03.13 \(linux\))' \ -H "Authorization: Bearer ${TOKEN}" \ -H 'Connection: close' \ -I \ "https://${ARTIFACTORY_URL}/v2/${IMAGE}/blobs/${DIGEST}" HTTP/1.1 200 OK Date: Mon,09 Nov 2020 14:57:05 GMT Server: Secure Entry Server Content-Type: application/octet-stream Docker-Content-Digest: sha256:[MASKED] Docker-distribution-Api-Version: registry/2.0 X-Artifactory-Id: [MASKED] X-Artifactory-Node-Id: [MASKED] Set-Cookie: SCDID_S=[MASKED]; path=/; Secure; HttpOnly Connection: close 来查看Nginx和Artifactory之间交换了哪些数据:

tcpdump

WAF上的TrafficAnalyzer显示来自Artifactory的传入响应中缺少HEAD /v2/[MASKED]/blobs/[MASKED] HTTP/1.1 X-JFrog-Override-Base-Url: https://[MASKED]:443 X-Forwarded-Port: 443 X-Forwarded-Proto: https Host: [MASKED] X-Forwarded-For: 10.10.40.14 Connection: close ClientCorrelator: 0rIKeSpqZ9E$ RequestCorrelator: 7f0100-9099-2020.11.09_1457.05.275-001 HSP_CLIENT_ADDR: [MASKED] Hsp-ListenerUri: https://[MASKED] HSP_HTTPS_HOST: [MASKED]:443 Accept: */* Authorization: Bearer [MASKED] User-Agent: docker/19.03.13 go/go1.13.15 git-commit/4484c46d9d kernel/4.19.128-microsoft-standard os/linux arch/amd64 UpstreamClient(Docker-Client/19.03.13 \(linux\)) HTTPS: on SSLSessionID: 78ad360e9ea54f5efdb72ea223a63b6cbc7788ae9a1e876620e398040d06182c SSLSessionTimeLeft: 3600 SSLSessionAge: 0 SSLCipher: ECDHE-RSA-AES128-GCM-SHA256 SSLCipherKeySize: 128 SSLProtocolVersion: TLSv1.2 Via: HTTP/1.1 Secure Entry Server HTTP/1.1 200 OK Content-Length: 2529 Content-Type: application/octet-stream Date: Mon,09 Nov 2020 14:57:05 GMT Docker-Content-Digest: [MASKED] Docker-distribution-Api-Version: registry/2.0 Server: Artifactory/7.4.1 70401900 X-Artifactory-Id: 5a2dee84b6d80d2f:1f521881:17554c79de4:-8000 X-Artifactory-Node-Id: [MASKED] Connection: close 。因此,必须由Nginx负责将其删除

现在,当我通过VPN连接以绕过WAF时,响应看起来还可以:

Content-Length

但是我也注意到,请求中设置的标头较少。那是其他一些导致Nginx删除Host: [MASKED] User-Agent: docker/19.03.13 go/go1.13.15 ... Authorization: Bearer [MASKED] Connection: close Date: Fri,06 Nov 2020 17:13:58 GMT Content-Type: application/octet-stream Content-Length: 2529 Docker-Content-Digest: [MASKED] Docker-distribution-Api-Version:registry/2.0 Server: Artifactory/7.4.1 70401900 X-Artifactory-Id: 5a2dee84b6d80d2f:1f521881:17554c79de4:-8000 X-Artifactory-Node-Id: [MASKED] Connection: close 的WAF标头吗?我在Nginx调试日志中没有看到与此相关的任何内容。有什么想法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。