需要有人把我推向正确的方向 .
我们使用apache http server(http1)reverse-proxy向另一个http服务器(http2)发送请求 . 挑战是http2不会在响应中将HTML页面发送回http1 .
http2日志确实显示了请求进入 . 但是,http1日志导致HTTP 502错误:
内部错误(特定信息不可用):[客户端] AH01102:从远程服务器localhost错误读取状态行:9001 [代理:错误] [客户端] AH00898:从/ app / myContext / LogMessage返回的远程服务器读取错误
这是返回HTTP状态200的http2日志:
“GET / app / myContext / LogMessage HTTP / 1.1”200 -
请注意,那些导致HTML页面正常工作的请求 .
您认为这应该是什么方法?对于这种类型的请求,使用反向代理可能不是一个好的选择吗?
我们在http1上设置httpd.conf这样设置:
ProxyPass "/app/myContext/"
http://localhost:9001/app/myContext/"
ProxyPassReverse "/app/myContext/"
http://localhost:9001/app/myContext/"
2 回答
完全禁用
http1
上的ErrorLog:您是否尝试使用mod_log_config忽略
http1
?根据示例,格式字符串可能是:或者LogFormat字符串也可以工作:
(h / t到Avoid logging of certain missing files into the Apache2 error log)
您的问题是
http1
向请求者发出502?在这种情况下,也许使用<If>
和自定义ErrorDocument
?使用以下解决方案:在http2中重新路由LogMessage调用以获取空白html页面:1 . 在/ htdocs目录中创建blankfile.html . 2.在httpd.conf中添加以下行:RewriteRule ^ . (app / myContext / LogMessage) . /blankfile.html [L]
这对我们有用,因为LogMessage的整个目的是在http2 access_log中记录请求 .
只是要感谢@cowbert和我一起精通这个!