如何使用Nginx和dropwizard部署angularjs应用程序前端

时间:2015-05-18 15:28:39

标签: java angularjs nginx web-deployment dropwizard

我正在开发一个使用angularjs应用程序前端作为后端dropwizard的应用程序。我打算使用Nginx作为后端dropwizard服务器的网关,并作为资产服务器(图像和angularjs应用程序)。

我的问题是什么是部署的最佳策略:

  1. 使用dropwizard后端捆绑angularjs并使用nginx作为前端?
  2. 在nginx服务器上部署angularjs应用程序?
  3. 提前致谢,

4 个答案:

答案 0 :(得分:3)

我会将nginx用作API Gateway,将您的请求路由到后端。

  

实施API网关,该网关是所有客户端的单一入口点。 API网关以两种方式之一处理请求。有些请求只是代理/路由到适当的服务。它通过扇出多个服务来处理其他请求。

使用网关,您可以根据需要灵活地更改后端。因为nginx仅作为网关工作,所以他也可以提供静态文件(angularjs)。网关具有更多优势,如日志记录,身份验证等。

答案 1 :(得分:1)

由于

,我宁愿在nxginx中部署angularjs
  • 快速提供静态内容(angularjs)
  • 很少与后端互动 服务器(一些http调用)

答案 2 :(得分:1)

遵循此answer您可以使用此nginx配置文件,以便将服务器内的Dropwizard应用程序从端口8080代理到端口80:

server {
listen 80;

server_name api.example.com;

location / {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header  Host             $http_host;
    proxy_set_header  X-Real-IP        $remote_addr;
    proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

对于Angular应用程序,您可以从Dropwizard serve static assets或设置virtual host via Nginx

作为旁注,请记住在Dropwizard应用程序中在mainClass中配置CORS:

  @Override
  public void run(Configuration configuration, Environment environment) throws Exception {
    configureCors(environment);
    environment.jersey().register(new HelloWorldResource(template));
  }

  private void configureCors(Environment environment) {
    FilterRegistration.Dynamic filter = environment.servlets().addFilter("CORS", CrossOriginFilter.class);
    filter.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
    filter.setInitParameter(CrossOriginFilter.ALLOWED_METHODS_PARAM, "GET,PUT,POST,DELETE,OPTIONS");
    filter.setInitParameter(CrossOriginFilter.ALLOWED_ORIGINS_PARAM, "*");
    filter.setInitParameter(CrossOriginFilter.ACCESS_CONTROL_ALLOW_ORIGIN_HEADER, "*");
    filter.setInitParameter("allowedHeaders", "Content-Type,Authorization,X-Requested-With,Content-Length,Accept,Origin");
    filter.setInitParameter("allowCredentials", "true");
  }

答案 3 :(得分:0)

从nginx提供像angularjs应用程序这样的静态文件将减少dropwizard的负担。

编辑:结果dropwizard确实支持serving static files。但是,我仍然相信nginx会做得更好。