请求方法的 Apache 代理配置

请求方法的 Apache 代理配置

我想将我的 HTTP webapi 隐藏在 Apache 代理后面。我当前的配置是:

<VirtualHost *:8180>
SSLEngine on
SSLCertificateFile /tools/Apache24/conf/ssl/---.crt
SSLCertificateKeyFile /tools/Apache24/conf/ssl/---.key

ServerName some.server.some.where
DocumentRoot "/applications/------/dist"
DirectoryIndex index.html

RewriteEngine On
RewriteRule /api/(.*)           http://localhost:8182/$1 [P,L]

ProxyPass /api/ http://localhost:8182/  
ProxyPassReverse /api/ http://localhost:8182/   

<Directory /applications/------/dist>
    Require all granted
</Directory>
</VirtualHost>

有了这个,我可以通过 /api 访问我的 api,但它只适用于 GET 请求?我该怎么做才能允许 POST、PUT 和 DELETE?BR,Daniel

答案1

首先,您有两个指令,它们或多或少应该做同样的事情,使用

RewriteEngine On
RewriteRule /api/(.*)           http://localhost:8182/$1 [P,L]

或者

ProxyPass /api/ http://localhost:8182/  
ProxyPassReverse /api/ http://localhost:8182/

但不能同时使用两者。(我个人更喜欢 ProxyPass 节)。

除非另有配置,否则应反向代理所有方法,并且当 GET 有效时,POST 和其他方法也应该有效。(除非你在其他地方禁止它们。)

但是在很多情况下,/api/在反向代理上使用的 URL 路径但在/的根目录中安装实际 APIhttp://localhost:8182/可能会以有趣的方式失败。

相关内容