在我的应用程序中,我有一个Java REST API后端和一个Angular前端。
我以前用glassfish托管API,用IIS托管Angular代码,但这引起了一些问题,现在我希望将所有内容移到glassfish服务器上。
API在带有上下文根/Foo
的glassfish 4服务器上运行;在端口8080
/ 8181
上,具体取决于是http
还是https
。
已将IIS设置为通过端口80
/ 443
提供角度代码。
这对具有严格防火墙设置的客户端造成了问题,这些客户端由于Glassfish端口未打开而阻止了对后端的API调用。因此,我决定将角度代码移至glassfish的/docroot/
文件夹中,并将其用作角度服务器而不是IIS的Web服务器。这样,前端和后端都可以在相同的端口上运行。
我的Angular代码位于/docroot/v1/
中。
角度站点设置为单页应用程序,并使用角度的Router
进行路由。 Angular站点的上下文根为/v1/
。如果您从/v1/index.html
开始并导航到其他路线,则该站点可以正常工作。但是,如果您手动尝试访问路线,则会引发404
错误。我使用IIS时的解决方案是设置重写规则,以将所有内容重定向回/v1/
。
我有以下web.config
文件:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/v1/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
如何在不弄乱也在服务器上运行的API的情况下使用glassfish实现相同的目的?