我正在 tomcat 9 环境中部署一个 Angular 13 应用程序。
这是我正在使用的域名: http://streamsspain.com/
结果如下: http://streamsspain.com/streamsspain_web/
我发现的问题是,我在 Ubuntu 20 操作系统中使用了来自 apache2 的代理,从 apache2 服务器到 tomcat 服务器的重定向正确完成,但我需要从 url 中删除应用程序的名称,即“streamsspain_web/”,我尝试使用相应的规则在 apache2 中创建“RewirteRule”,但找不到确切的规则。
或者也许 url 重写应该在 tomcat 本身中完成?
Apache 配置如下:
<VirtualHost *:80>
ServerName streamsspain.com
ServerAlias www.streamsspain.com
ServerAdmin [email protected]
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost Off
ProxyPass /StreamsSpain_WEB/ http://localhost:8180/StreamsSpain_WEB/
ProxyPass / http://localhost:8180/StreamsSpain_WEB/
ProxyPassReverse / http://localhost:8180/StreamsSpain_WEB/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ErrorLog ${APACHE_LOG_DIR}/Uploader_Image_error.log
CustomLog ${APACHE_LOG_DIR}/Uploader_Image_access.log combined
</VirtualHost>
答案1
正如你所说,我认为你应该使用 RewriteRule。顺便说一下,在当前的 conf 文件中,你说无论我在浏览器中搜索什么http://streamsspain.com/和http://streamsspain.com/streamsspain_web/,我将被重定向到相同的服务,但我只会收到来自http://streamsspain.com/streamsspain_web/,因为是唯一具有 ProxyPassReverse 规则的。
如果我理解正确的话,你希望你的服务能够暴露在http://streamsspain.com/没有应用程序名称。如果是这种情况,我认为您需要一个 RewriteRule 来将“streamsspain_web/”替换为“空字符串”。
然后您需要两个规则(ProxyPass 和 ProxyPassReverse)进行转发。