обратный прокси-сервер Nginx для Synology DSM, без базы URL

Я запускаю Synology NAS с DSM 5.x. У меня, наконец, есть рабочий обратный прокси-сервер nginx с другого сервера с приведенной ниже конфигурацией.

то, что я не хочу, это все места, если это возможно. Веб-интерфейс DSM использует каждый из приведенных ниже фрагментов url как часть его интерфейса. Там нет URL базы, и нет возможности добавить его.

мой вопрос: возможно ли в nginx с proxy_pass или proxy_redirect или переписать (или что-то еще), чтобы не перечислять все отдельные локации по отдельности? (Я пробовал десятки комбинаций этих в течение нескольких дней, и никогда не был в состоянии получить что-нибудь, кроме ниже, чтобы работать.)

nginx.conf

http {
    upstream dsm {
        server 1.1.1.1:5000;
    }
    server {
        location /dsm/ {
            include proxy_headers;
            proxy_pass http://dsm/;
        }
        location /scripts/ {
            include proxy_headers;
            proxy_pass http://dsm;
        }
        location /synoSDSjslib/ {
            include proxy_headers;
            proxy_pass http://dsm;
        }
        location /webapi/ {
            include proxy_headers;
            proxy_pass http://dsm;
        }
        location /webdefault/ {
            include proxy_headers;
            proxy_pass http://dsm;
        }
        location /webfm/ {
            include proxy_headers;
            proxy_pass http://dsm;
        }
        location /webman/ {
            include proxy_headers;
            proxy_pass http://dsm;
        }
    }
}

proxy_headers

proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;

Edit: позвольте мне уточнить-- я опустил несколько деталей. Я хотел бы один адрес и порт с несколькими базовыми url-адресами, которые могут достигать нескольких DSM без базового url-адреса, такого как /scripts & /webapi, от столкновения/столкновения/сговора. Я знаю, что возможно несколько адресов и портов. То, что я ищу, если это возможно,- это способ ssh на сервер, обслуживающий nginx с локальной переадресацией A-L, перенаправляя один порт, чтобы я мог достичь нескольких DSM с одним перенаправленным портом ssh. Решение, которое у меня есть сейчас, работает, но только для одного DSM. Если я добавлю 2nd, они сталкиваются.

18
задан snapshoe
22.01.2023 17:10 Количество просмотров материала 3499
Распечатать страницу

1 ответ

блоки местоположения не имеют ничего похожего, поэтому их объединение с регулярным выражением является немного трудоемким и сложным.

вместо этого мы можем просто направить все запросы в DSM.

есть три метода, чтобы иметь несколько серверов DSM без столкновения.

Метод #1: Виртуальные Хосты

вам нужно будет настроить DNS, чтобы указать выбранный виртуальный хост на сервере NGINX.

http {
    #DSM 1 Standard DSM setup
    upstream dsm1 {
        server 1.1.1.1:5000;
    }
    #DSM 2 - DSM has different Port, same IP Address
    upstream dsm2 {
        server 1.1.1.1:6000;
    }
    #DSM 3 - DSM has different IP Address
    upstream dsm3 {
        server 2.1.1.1:5000;
    }
    #DSM 1 Standard DSM setup
    server {
        listen       80;
        server_name dsm1.mydomain.com;
        location / {
            include proxy_headers;
            proxy_pass http://dsm1/;
    }
    #DSM 2 - DSM has different Port, same IP Address
    server {
        listen       80;
        server_name dsm2.mydomain.com;
        location / {
            include proxy_headers;
            proxy_pass http://dsm2/;
    }
    #DSM 3 - DSM has different IP Address
    server {
        listen       80;
        server_name dsm3.mydomain.com;
        location / {
            include proxy_headers;
            proxy_pass http://dsm3/;
    }

Способ № 2, Различные порты NGINX

каждый сервер может быть доступен на его собственный порт на сервере NGINX

http {
    #DSM 1 Standard DSM setup
    upstream dsm1 {
        server 1.1.1.1:5000;
    }
    #DSM 2 - DSM has different Port, same IP Address
    upstream dsm2 {
        server 1.1.1.1:6000;
    }
    #DSM 3 - DSM has different IP Address
    upstream dsm3 {
        server 2.1.1.1:5000;
    }
    #DSM 1 Standard DSM setup
    server {
        listen       80;
        location / {
            include proxy_headers;
            proxy_pass http://dsm1/;
    }
    #DSM 2 This DSM server is available on another port (8081). Access using http://nginx_ip:8081
    server {
        listen       81;
        location / {
            include proxy_headers;
            proxy_pass http://dsm1/;
    }
}

Метод #3: Переписывает

каждый сервер может быть доступен через суб-url на сервере NGINX. Может не работать в зависимости от конфигурации веб-страницы DSM и имеет ли он относительные вместо абсолютных URL-адресов.

http {
    #DSM 1
    upstream dsm1 {
      server 1.1.1.1:5000
    }
    #DSM 2
    upstream dsm2 {
      server: 1.1.1.2:5000
    }
    server {
      listen 80;
      location /dsm1/(?<dsmurl>.*) {
        include proxy_headers;
        proxy_pass http://dsm1/$dsmurl
      }
      location /dsm2/(?<dsmurl>.*) {
        include proxy_headers;
        proxy_pass http://dsm2/$dsmurl
      }
     }
}
0
отвечен TearsOnTheMoon 2023-01-24 00:58

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх