Os blocos de localização não têm nada semelhante, então combiná-los com uma regex é um pouco demorado e complicado.
Em vez disso, podemos encaminhar todas as solicitações para o DSM.
Existem três métodos para ter vários servidores DSM sem conflito.
Método 1: hosts virtuais
Você precisará configurar seu DNS para apontar seu host virtual escolhido no servidor 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/;
}
Método 2, portas NGINX diferentes
Cada servidor pode ser acessado em sua própria porta no servidor 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/;
}
}
Método 3: reescreve
Cada servidor pode ser acessado por meio de um sub-URL no servidor NGINX. Pode não funcionar dependendo da configuração da página da web do DSM e se ela possui ou não URLs absolutas em vez de absolutas.
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
}
}
}