Apache Web服务器(httpd) - 代理传递的文件

时间:2017-11-03 12:16:53

标签: apache webserver

我使用Apache httpd

进行VirtualHost设置

我正在做一些ProxyPassProxyPassReverse,因此我可以将呼叫重定向到本地服务器。

我想要的是能够使用apache服务器上的文件模拟某些端点(如果存在)。

例如,我有端点

http://localhost:8080/myapp/myendpoint

现在我跑的时候

http://localhost/myapp/myendpoint

我的VirtualHost安装程序的apache会将调用重定向到我的本地服务器

现在我可以说我在{apache main dir}/htdocs/myapp/中放了一个名为myendpoint的文件。

如果我在Location调用

中删除ProxyPass代码VirtualHost

http://localhost/myapp/myendpoint返回htdocs中文件的结果。但是如果我在配置中留下上面的Location标记,它会忽略该文件并转到服务器。

如何在执行proxypass之前配置Apache Web Server以优先考虑文件?

1 个答案:

答案 0 :(得分:0)

而不是

ProxyPass         /localhost/myapp/ http://localhost:8080/localhost/myapp/
ProxyPassReverse  /localhost/myapp/ http://localhost:8080/localhost/myapp/

您可以尝试使用

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule       /localhost/myapp/ http://localhost:8080%{REQUEST_URI} [P]
ProxyPassReverse  /localhost/myapp/ http://localhost:8080/localhost/myapp/

http://httpd.apache.org/docs/current/rewrite/flags.html#flag_p,注意效果警告)