Nginx с vuejs сохранением маршрутов - PullRequest
1 голос
/ 03 августа 2020

У меня есть страница vue для загрузки dicom-изображения средства просмотра с открытым исходным кодом под названием «OHIF».

Для проверки я просто создал запись в файле hosts windows как: 127.0.0.1 gestan1 .myapp.local

У меня также есть архиватор изображений, работающий на localhost: 8042.

Я настроил OHIF для встраивания его на мою страницу vue.

У меня есть настроен nginx для проксирования местоположения «orthan c» на сервер изображений. Сначала все работает хорошо.

Проблема в том, что когда я вручную обновляю sh мою vue страницу.

Когда я получаю изображение, браузер URL-адреса в адресной строке изменения на что-то "https://gestan1.myapp.local/viewer/1.2.826.0.1.3680043.8.1055.1.20111103111148288.98361414.79379639".

Тогда, если я сделаю refre sh на странице, у меня возникнет проблема с маршрутизатором, потому что у меня нет маршрутов, начинающихся с "viewer".

Есть ли способ решить это с помощью nginx? Я думаю, что это можно было бы решить, если бы OHIFViewer мог получать изображения без изменения моего маршрута vuejs. Но я не знаю, как это сделать.

//nginx
//server static file to my vuejs app
location / {
 access_log off;
 root     ../gestan-cloud/dist;
 index    index.html index.htm;
 try_files $uri $uri/ /index.html;
}

//server image to OHIF in my html page
location /orthanc/ {
  rewrite /orthanc(.*) $1 break;
  proxy_pass http://localhost:8042;
  proxy_set_header HOST $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_request_buffering off;
  proxy_max_temp_file_size 0;
  client_max_body_size 0;
  add_header 'Access-Control-Allow-Credentials' 'true';
  add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
  add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
  add_header 'Access-Control-Allow-Origin' '*';
}

//html vue tenmplate
<template>
 <div id="viewer" height="800px"></div>
<template>
<script>
export default {
  name: "EmbeddedViewer",
  mounted() {
    let componentRenderedOrUpdatedCallback = function() {
      console.log("OHIF Viewer rendered/updated");
      window.ohifRendered = true;
    };
    let containerId = "viewer";
    if (!window.ohifRendered) {
      window.OHIFViewer.installViewer(
        {
          routerBasename: "/",
          extensions: [],
          showStudyList: true,
          filterQueryParam: false,
          servers: {
            dicomWeb: [
              {
                name: "Orthanc",
                wadoUriRoot: "/orthanc/wado",
                qidoRoot: "/orthanc/dicom-web",
                wadoRoot: "/orthanc/dicom-web",
                qidoSupportsIncludeField: false,
                imageRendering: "wadors",
                thumbnailRendering: "wadors",
                requestOptions: {
                  requestFromBrowser: true,
                },
              },
            ],
        containerId,
        componentRenderedOrUpdatedCallback
      );
    }
  },
};
   

1 Ответ

0 голосов
/ 03 августа 2020

Я ни в коем случае не эксперт с Nginx. При этом у меня конфигурация, аналогичная вашей, для приложения Vue. js, работающего в модуле Kubernetes, с Nginx перед приложением для обслуживания файлов. Единственная разница между моей конфигурацией и вашей - это одна строка:

# Yours
try_files $uri $uri/ /index.html;

# Mine
try_files $uri /index.html =404;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...