RShiny Spring Integration Issue - Nginx работает неправильно - HttpMediaTypeNotSupportedException - PullRequest
0 голосов
/ 10 ноября 2018

Nginx conf:

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

upstream websocket {
    server localhost:3305;
}

server {
    listen 8080;

    location /myapp/insights/shiny-proxy/websocket/ {
        proxy_pass http://websocket/;
        proxy_redirect / $scheme://$http_host/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_read_timeout 20d;
        proxy_buffering off;
    }

    location / {
        proxy_pass http://localhost:8070/;
    }
}

Spring Mvc (версия 4.2.4) Контроллер:

@RequestMapping(path = "/insights/shiny-proxy/**")
public ResponseEntity<String> mirrorRest(@RequestBody(required = false) 
 String body, HttpMethod method,
        HttpServletRequest request) throws URISyntaxException {
    String path = StringUtils.removeStart(request.getRequestURI(), 
   "/myapp/insights/shiny-proxy");
    URI uri = new URI(request.getScheme(), null, "localhost", ShinyServiceImpl.port, path, request.getQueryString(), null);

    HttpHeaders headers = new HttpHeaders();
    if (path.endsWith(".css.map")) {
        headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
    }/*else {
        headers.setAccept(Arrays.asList(MediaType.ALL));
    }*/
    HttpEntity<String> httpEntity = new HttpEntity<>(body, headers);
    ResponseEntity<String> ret = null;
    try {
        ret = restTemplate.exchange(uri, method, httpEntity, String.class);
    } catch (Exception e) {
        e.printStackTrace();
    }

    // System.out.println(ret);
    // System.out.println("ResponseEntity headers: " + ret.getHeaders());
    return ret;
}

JSP:

   <iframe src="shiny-proxy/" class="shinyFrame">
          <object data="shiny-proxy/" type="text/html; charset=utf-8" class="shinyFrame">
          <embed src="shiny-proxy/" type="text/html; charset=utf-8" class="shinyFrame" />
         </object>
    </iframe>

Итак, когда мое приложение запущено, RShiny будет работать на localhost: 3305, поэтому при открытии localhost: 8070 / myapp / insights / index.html должен отображаться iframe с блестящей ссылкой. Прямо сейчас я получаю исключение "HttpMediaTypeNotSupportedException: No Type Type Set".

В Nginx нет журналов доступа, иногда он показывает ошибку в восходящем направлении или ошибку соединения, например

"client timed out (10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) while waiting for request, client: 127.0.0.1, server: 0.0.0.0:8080"

Пожалуйста, предоставьте информацию, где я могу сделать что-то не так. Благодарю вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...