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

Mas*_*ind 13 java nginx web-deployment angularjs dropwizard

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

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

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

提前致谢,

Jua*_*ado 2

按照这个答案,您可以使用此 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

对于 Angular 应用程序,您可以从 Dropwizard提供静态资产,也可以通过 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");
  }
Run Code Online (Sandbox Code Playgroud)