Apache拒绝对反向代理的PUT请求,出现405错误

Apache拒绝对反向代理的PUT请求,出现405错误,apache,express,reverse-proxy,Apache,Express,Reverse Proxy,我在使用apache作为节点JS/Express REST API上的反向代理时遇到问题 当我向代理的URL发出PUT请求时,apache似乎会使用405方法not allowed响应,而不是将请求转发给服务。我可以提出GET和POST请求,没有问题 如果我将请求直接发送到API(),一切正常。此外,如果我从服务器本身向域发出请求,它也可以正常工作 CORS在API中被禁用 <VirtualHost example.domain.local:80> ProxyPreserve

我在使用apache作为节点JS/Express REST API上的反向代理时遇到问题

当我向代理的URL发出PUT请求时,apache似乎会使用405方法not allowed响应,而不是将请求转发给服务。我可以提出GET和POST请求,没有问题

如果我将请求直接发送到API(),一切正常。此外,如果我从服务器本身向域发出请求,它也可以正常工作

CORS在API中被禁用

<VirtualHost example.domain.local:80>
    ProxyPreserveHost On
    ProxyPass / http://192.168.1.40:9020/
    ProxyPassReverse / http://192.168.1.40:9020/
</VirtualHost>

代理主机
ProxyPass/http://192.168.1.40:9020/
ProxyPassReverse/http://192.168.1.40:9020/
当我检查请求时,我可以看到HTTP allow头被设置为GET、HEAD、POST、OPTIONS、TRACE。所以我尝试在虚拟主机指令中使用指令来更改它

<Proxy "*">
  Order deny,allow
  Allow from all
  AllowMethods GET PUT DELETE POST
</Proxy>

命令拒绝,允许
通融
AllowMethods GET PUT DELETE POST
但是没有变化。我还尝试在代理指令中使用LimitExcept指令,但这并没有什么不同

我也浏览了所有的httpd.conf,但没有看到任何可疑的配置


我完全卡住了,有谁熟悉这种问题吗?

你找到解决办法了吗?如果你有,你能把它贴在这里吗,或者链接到它吗?不幸的是,当我现在看配置时,它没有什么不同。但据我所知,目前这种方法正在发挥作用。但我认为它与Allow from all指令有关,因为这是Apache2.4而不是2.2。因此,它必须是“要求所有授权”。感谢@GrimurD我让它工作了,是路径不匹配导致请求转到不同的URI。我想我只是有相同的问题,只是设置有点不同。我的Apache也是作为反向代理运行的,我的后端是asp.net-core api(而不是节点js)。我的解决方案是,用于执行PUT请求的URI有一些大写字母(因为有人像这样硬编码该地址),但它们应该都是小写。当我将它们改为小写时,结果是PUT开始工作。Apache在这里给出的消息在较低的技术级别上可能有意义,但在我们这里讨论的级别上,如果它返回URI全部无效,而不是说不允许“PUT”,则会更好。