Exclude an alias from virtualhost proxypass
我正在关注虚拟主机配置。期望的结果是:
他来自 /var/www/myapp
请求后,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> |
这就是我能够达到预期结果的方式。以下是
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> |
您可以简单地在定义 / 之前添加另一个 ProxyPass 指令,而不是使用:
1 2 | ProxyPass /myapp ! ProxyPass / http://localhost:8069/ |
由于 ProxyPass 尊重优先级(将处理第一个匹配项),它将正确重定向到目录而不是代理。
如果你有一个 RewriteCond(很可能在你运行代理时),这个也会让你开心!
1 2 3 4 | <Location /.well-known/acme-challenge/> RewriteEngine off ProxyPass ! </Location> |