Подтвердить что ты не робот

Как развернуть интерфейс приложения angularjs с помощью Nginx и dropwizard

Я разрабатываю приложение, используя внешний интерфейс приложения angularjs, имеющий в качестве backend dropwizard. Я планирую использовать Nginx в качестве шлюза для сервера back-dropwizard и в качестве сервера активов (изображения и, возможно, приложения angularjs).

Мой вопрос - это лучшая стратегия для развертывания:

  • Объединение угловых с помощью бэкэнда dropwizard и использование nginx в качестве интерфейса.
  • Развертывание приложения angularjs на сервере nginx?

Спасибо заранее,

4b9b3361

Ответ 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 или установить виртуальный хост через Nginx

В качестве примечания, не забудьте настроить CORS в своем mainClass из приложения Dropwizard:

  @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");
  }

Ответ 2

Я бы использовал nginx как API-шлюз, который направляет ваши запросы на ваш сервер.

Внедрение шлюза API, который является единственной точкой входа для всех клиентов. Шлюз API обрабатывает запросы одним из двух способов. Некоторые запросы просто проксируются/маршрутизируются в соответствующую службу. Он обрабатывает другие запросы, разворачивая несколько сервисов.

С помощью шлюза у вас есть возможность изменить свой бэкэнд по своему усмотрению. Поскольку nginx работает только как шлюз, он также может обслуживать ваши статические файлы (angularjs). Шлюз имеет больше преимуществ, таких как ведение журнала, аутентификация и т.д.

Ответ 3

Я предпочту развернуть angularjs в nxginx из-за

  • Быстрый статический контент (angularjs)
  • редко взаимодействие с обратной стороной сервер (некоторые HTTP-вызовы)

Ответ 4

Обслуживание статических файлов, таких как ваше приложение angularjs от nginx, уменьшит нагрузку на dropwizard.

EDIT: Оказывается, dropwizard поддерживает показ статических файлов. Тем не менее, я по-прежнему верю, что nginx лучше справится с этим.