我有一个反向代理 HTTPd (EC2) 和 Elastic Search Service (AWS),并且 ai 希望将我的请求从 Httpd 重定向到 ElasticSearch 服务(无需简单地重写 URL,因为 Elasticsearch 服务无法从外部访问)
所以我的 Httpd 配置如下:
ProxyPass /elasticsearch/ https://MyelasticSearchLongUrl.es.amazonaws.com
ProxyPassReverse /elasticsearch/ https://MyelasticSearchLongUrl.es.amazonaws.com
但问题是我的 httpd 生成错误:
ProxyPass 工作人员主机名(MyelasticSearchLongUrl.es.amazonaws.com ) 太长 httpd.service:主进程已退出,code=exited,status=1/FAILURE Kill:找不到进程“” httpd.service:控制进程已退出,code=exited status=1 无法启动 Apache HTTP Server。单元 httpd.service 进入失败状态。 httpd.服务失败。
有没有办法改变httpd配置特别是URL限制长度?
答案1
不可以,2.4 中引入的工作人员名称硬编码限制为 96 个字符。有一个关于那个的错误,但鉴于其处于“NEW”状态的年龄超过 5 年,我怀疑上游并不关心。
正如您所说,解决方法是RewriteRule [P]
改为使用。如果您有一个混合了本地服务文件 ( Alias
)RewriteRule
和的复杂设置,请务必小心,因为从 移动到Redirect
可能会更改执行顺序。ProxyPass
RewriteRule
答案2
与之前的答案不同的是,这个错误https://bz.apache.org/bugzilla/show_bug.cgi?id=53218指的是总的worker名称,而不是OP指定的主机名,并且从httpd的v2.4.12开始允许被截断。
受限制的工作主机名是一个不同的错误,此处介绍:https://bz.apache.org/bugzilla/show_bug.cgi?id=62085
第二个错误已修复,并已向后移植到 v2.4.30。
建议在 Ubuntu 中修复:https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1750356
答案3
我在使用从源代码编译的 Apache HTTPD 2.4.46 的 Centos 7.4.1708 上遇到了这个问题,我发现运行 yum 更新来更新操作系统和相关软件包可以解决这个问题,而无需重新编译 Apache。