【问题标题】:Nginx and Tomcat For Spring and Angular App用于 Spring 和 Angular 应用程序的 Nginx 和 Tomcat
【发布时间】:2020-06-26 04:23:38
【问题描述】:

我在服务器上部署了 Tomcat 容器中的 Spring boot 和 Angular 应用程序。它在 localhost 上运行良好。

现在我正在尝试将我的域映射到应用程序。

当我调用我的域时,没有执行从 Angular 到 Spring 的 api 调用。由于它们在同一台服务器上,我使用 localhost 将 api 从 angular 调用到 spring。它适用于我的服务器浏览器本身,但不适用于其他地方,这对我来说很清楚为什么它不起作用。

但我不完全确定如何解决它。

这是我的 nginx 配置

   server {
        listen       80;
        server_name localhost mydomain mydomain;


        #access_log  logs/host.access.log  main;

        location {
            root   html;
         proxy_pass      http://mydomain:8080;
            index  index.html index.htm;
        }       
    }
Tomcat configuration :

 <Host name="mydomain"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Alias>mydomain</Alias>
        <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />   
</Host>

我的问题是:

我应该在从 Angular 到 Spring 调用 API 时使用服务器 IP 吗?它会工作吗?

第二个问题是当我调用我的域时,它会重定向到 tomcat 管理器页面。我希望它转到 localhost:8080/myApp。 我尝试将 proxy_pass 设置为 http://mydomain:8080/myapphttp://localhost:8080/myapp,但仍然没有成功。

对于这两个问题的任何指针将不胜感激。有关任何信息,我都可以在这里找到。

谢谢

【问题讨论】:

    标签: angular spring-boot nginx tomcat deployment


    【解决方案1】:

    是的,您需要在调用 API 时使用服务器 IP。原因是当客户请求您的 Angular 网站时,代码会呈现在他的网站上。现在,当 Angular 网站启动 API 调用时,它会尝试访问 ip localhost,这意味着相对于客户端浏览器而言是本地的,而对于 Angular 网站而言,情况并非如此。

    关于您的第二个问题,您想访问您的域并且需要通过根路径加载您的网站,对吗?

    【讨论】:

    • 您的第一部分 +1。我想如果用户点击 mydomain.com 那么它应该去 localhost:8080/web。但 Nginx 不接受 /web part only localhost:8080
    【解决方案2】:

    如果你想在用户点击 'mydomain.com' 时重定向到 /web 映射,你可以在你的 nginx 中添加如下配置:

    server {
        listen 8080;
    
        location / {
            proxy_pass mydomain.com/web;
        } 
    }
    

    这将监听 8080 端口并将所有请求定向/附加到 /web

    【讨论】:

      猜你喜欢
      • 2016-07-15
      • 2014-09-25
      • 1970-01-01
      • 2018-09-27
      • 2019-08-16
      • 2011-02-08
      • 2021-05-10
      • 2012-06-09
      • 2021-12-01
      相关资源
      最近更新 更多