As entradas de log significam que sua caixa não pode resolver app1-edge
hostname. Se você quiser localhost para o servidor, você precisa editar o arquivo hosts do sistema e adicionar a seguinte entrada para ele:
127.0.0.1 app1-edge
Então, eu mudaria um pouco as expressões regulares:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.htm;
error_page 500 502 503 504 /50x.html;
# redirect /api/myApp => http://myApp-edge:3000/myApp/
location ~* ^/api/([^/]+)/(.+)$ {
proxy_pass http://$1-edge:3000/$1/$2;
}
# redirect /myApp => http://myApp-ui:80/
location ~* ^/([^/]+)/(.+)$ {
proxy_pass http://$1-ui/$2;
}
}
Primeiro, as expressões regulares não precisam de aspas ou de escapar das barras. Em segundo lugar, é melhor usar o +
para a correspondência "um ou mais".
A suposição aqui é que a última parte do caminho contém pelo menos um caractere em todos os casos, ou seja, não há um URL como https://www.example.com/api/appname
ou https://www.example.com/api/appname/
.
Se tais URLs existirem, o regex pode ser ^/api/([^/]+)(/.*)$
para cuidar desses casos.
Você também deve tomar cuidado para ter apenas um bloco server
em sua configuração com server_name localhost
. Caso contrário, o nginx usará apenas um desses hosts virtuais, o que pode não ser esse.
Também removi os dois location
blocos em sua configuração original, porque você pode ter o mesmo efeito ao definir as diretivas root
e index
no nível server
.