Exclude an alias from virtualhost proxypass
我正在关注虚拟主机配置。期望的结果是:
如果有人请求 http://test.myserver.com/myapp,apache 服务
他来自 /var/www/myapp
如果 http://test.myserver.com/ 是
请求后,apache 将其重定向到端口 8069。
第 2 次有效,但第 1 次无效。有人可以帮忙吗!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
< VirtualHost *: 80>
ServerName test.myserver.com
Alias /myapp /var/www/myapp <Directory /var/www/myapp> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all </Directory>
ProxyPass / http://localhost:8069/ ProxyPassReverse / http://localhost:8069/
</VirtualHost> |
这就是我能够达到预期结果的方式。以下是 ProxyPassMatch ^/myapp ! 发挥作用的工作配置,除了 (server-address)/myapp 之外,所有请求都被代理到在端口 8069 上运行的 open-erp 的另一台服务器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
< VirtualHost *: 80>
ServerName test.myserver.com
Alias /myapp /var/www/myapp <Directory /var/www/myapp> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny Allow from all </Directory>
ProxyPassMatch ^/myapp ! ProxyPass / http://localhost:8069/ ProxyPassReverse / http://localhost:8069/
CustomLog /var/log/apache2/access.log common ErrorLog /var/log/apache2/error.log
</VirtualHost> |
- 与使用反向代理但仍想使用自动验证的虚拟主机的 let//’s encrypt 验证结合使用非常有用,例如。 G。别名 /.well-known “C:/apache24/htdocs/.well-known”////t ////t<目录 “C:/apache24/htdocs/.well-known”> ////t//// t////t… ////t</目录>
- @AndiB 问题是 <Directory> 不能使用 ProxyPass。只有 <Location> 并且不适用于 Alias。正在寻找解决方案……
- 这是一个更全面的配置建议:github.com/certbot/certbot/issues/2164 – 关键是使用 ProxyPass /path /url 而不是像以前那样使用 <Location /path> ProxyPass /url。现在它对我有用。
- @ygoe 你今天是我的英雄。
您可以简单地在定义 / 之前添加另一个 ProxyPass 指令,而不是使用:ProxyPassMatch ^/myapp !,如下所示:
1 2
|
ProxyPass /myapp !
ProxyPass / http://localhost:8069/
|
由于 ProxyPass 尊重优先级(将处理第一个匹配项),它将正确重定向到目录而不是代理。
-
确保 http://localhost:8069/ 服务器在应用程序中没有任何名为 /myapp 的路由。就我而言,它显示的是 404。
-
嗨,这会使最终的 url 看起来像 xyz.com/myapp
如果你有一个 RewriteCond(很可能在你运行代理时),这个也会让你开心!
1 2 3 4
|
<Location /.well-known/acme-challenge/>
RewriteEngine off
ProxyPass !
</Location>
|
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/269885.html