Chr*_*ngs 2 apache mod-rewrite tomcat reverse-proxy mod-proxy
我试图配置Apache以不同方式对待应用程序的某些端点。
我需要/ api,/ appname和/ admin转发到同一主机上的单独Tomcat实例,显然是在不同的端口上运行。
Apache正在监听443(SSL)。
查看Apache的文档,我看到一些示例,其中mod_rewrite用于类似的任务,而不是实际的用例。
只有端口80和443(80重定向到443)向外部开放,因此其他端口仅是内部端口……我们将其称为2001、3001和4001。
编辑:附录:我正在使用apache 2.2,目前没有计划更新到2.4.x。
首先,您需要确保mod_proxy已启用该功能。然后,假设你想每一个/api/,/appname/和/admin/看起来像一个子目录到终端用户,他们正在听的2001,3001和4001分别,我想你正在寻找的是这样的:
(在服务器或虚拟主机配置中)
RewriteRule ^/api/(.*) http://localhost:2001/$1 [P,L,QSA]
ProxyPassReverse /api/ http://localhost:2001/
RewriteRule ^/appname/(.*) http://localhost:3001/$1 [P,L,QSA]
ProxyPassReverse /appname/ http://localhost:3001/
RewriteRule ^/admin/(.*) http://localhost:4001/$1 [P,L,QSA]
ProxyPassReverse /admin/ http://localhost:4001/
Run Code Online (Sandbox Code Playgroud)
(在.htaccess配置中...没有前导斜线...也没有mod_proxy)
RewriteRule ^api/(.*) http://localhost:2001/otherpath/$1 [P,L,QSA]
RewriteRule ^appname/(.*) http://localhost:3001/otherpath/$1 [P,L,QSA]
RewriteRule ^admin/(.*) http://localhost:4001/otherpath/$1 [P,L,QSA]
Run Code Online (Sandbox Code Playgroud)
该$1代表什么用括号捕获的。P告诉mod_rewrite使用mod_proxy来处理此重写。L意味着使这成为最后一条规则;应用后停止重写。QSA将来自入站请求的查询字符串追加到重写的请求上。
所述ProxyPassReverse用于从所述内部实例捕捉任何重定向和重写它以匹配外部URI。注:mod_proxy需要在服务器配置(服务器,虚拟主机,目录),是无效的.htaccess
一些有用的参考:
现在,尽管如此,您可能还是不想使用mod_rewrite此功能。确实是mod_proxy为您完成了所有工作。如果您没有任何实际的重写,则应直接使用mod_proxy。甚至mod_rewrite只是将其交给mod_proxy任何人。
从http://httpd.apache.org/docs/2.2/rewrite/avoid.html:
RewriteRule提供[P]标志以通过传递重写的URImod_proxy。Run Code Online (Sandbox Code Playgroud)RewriteRule ^/?images(.*) http://imageserver.local/images$1 [P]但是,在许多情况下,如上面的示例所示,当不需要实际的模式匹配时,该
ProxyPass指令是更好的选择。这里的示例可以表示为:Run Code Online (Sandbox Code Playgroud)ProxyPass /images/ http://imageserver.local/images/请注意,无论您使用
RewriteRule还是ProxyPass,都仍然需要使用ProxyPassReverse指令来捕获从后端服务器发出的重定向:Run Code Online (Sandbox Code Playgroud)ProxyPassReverse /images/ http://imageserver.local/images/当在同一作用域中还有其他有效的RewriteRules起作用时,您可能需要使用RewriteRule代替,因为RewriteRule通常在ProxyPass之前生效,因此可能抢占您要完成的工作。
| 归档时间: |
|
| 查看次数: |
1696 次 |
| 最近记录: |