Spring 引导和 Nginx 集成

Spring Boot and Nginx integration

在我的项目中,Web 应用程序是使用 Spring 引导和默认 tomcat 服务器开发的。 我正在使用 NGINX 作为负载均衡器,并在 NGINX 配置中配置了我的 spring-boot-web-app 如下:

location /spring-boot-web-app {
     proxy_pass http://spring-boot-web-app/
}

http {
    upstream /spring-boot-web-app {
        server <IP_of_spring_boot_app>:<Port_of_spring_boot_app>
    }
}

现在假设 NGINX IP 和端口分别为 nginx_ipnginx_port。 也为我的网络应用程序 URL 作为:http://web_app_ip:web_app_port/rest/echo/hi

上面的 URL 工作正常。但是,当我尝试通过 NGINX 访问相同的 URI 时,它会抛出 404。URL 通过 NGINX 用作: http://nginx_ip:nginx_port/spring-boot-web-app/rest/echo/hi

有什么我遗漏的吗?

这对我有用。你能试试这个吗?

  1. 运行 tomcat

    docker run -d -p 8080:8080 --name=tomcat tomcat:8 
    
  2. 运行 nginx

    docker run -d -p 80:80 --link tomcat:tomcat --name=nginx nginx
    
  3. 进入 nginx 容器并更新 conf

    docker exec -it nginx bash
    

    /etc/nginx/nginx.conf:

    server {
       listen 80 default_server;
      server_name subdomain.domain.com;
      location / {
          proxy_pass http://tomcat:8080;
          proxy_set_header Host      $host;
          proxy_set_header X-Real-IP $remote_addr;
      }
    }
    
  4. 重启nginx服务

    nginx -s reload
    
  5. 从主机浏览器通过 nginx 访问 tomcat。您可能需要将条目添加到 /etc/hosts

    http://subdomain.domain.com
    

完成 nginx 配置:nginx.conf