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"
Пожалуйста, предоставьте информацию, где я могу сделать что-то не так. Благодарю вас.