Esta é a primeira vez que faço perguntas sobre o serverfault. Se eu sentir falta de algo, por favor me avise!
Estou tentando resolver esse problema há dois dias. Ainda não consegue encontrar uma solução. Aqui está o meu cenário:
Servidor A
- Aplicativo do nó A na porta 3000
- Nginx na porta 80
- quando vou para
/hello
, o aplicativo B deve ser exibido no servidor B
Servidor B
- Aplicativo do nó B na porta 3000
Quando visito /hello
, recebo 502 Bad Gateway
.
No meu log de erros, vejo isto:
connect() to 162.243.104.184:3000 failed (22: Invalid argument) while connecting to upstream, client: 75.72.170.8, server: 107.170.64.149, request: "GET /hello/ HTTP/1.1", upstream: "http://162.243.104.184:3000/hello/", host: "107.170.64.149"
Aqui está meu conf nginx para o servidor A:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name 107.170.64.149;
location / {
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_pass http://107.170.64.149:3000;
proxy_redirect off;
}
location /hello {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Host $host;
proxy_pass http://162.243.104.184:3000;
proxy_bind 162.243.104.184;
proxy_redirect off;
}
}
No meu /etc/sysctl.conf
, adicionei:
net.ipv4.ip_nonlocal_bind=1
para permitir que os processos se vinculem ao endereço não local, porque anteriormente recebi este erro:
bind(162.243.104.184) failed (99: Cannot assign requested address) while connecting to upstream, client: 75.72.170.8, server: 107.170.64.149, request: "GET /hello/ HTTP/1.1", upstream: "http://162.243.104.184:3000/hello/", host: "107.170.64.149"
Qualquer orientação ou ajuda seria muito apreciada! Obrigada!
Editar 1
Minha nova configuração do nginx:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name 107.170.39.161;
location / {
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_pass http://107.170.39.161:3000;
proxy_redirect off;
}
location /hello {
rewrite /hello(.*) /$1 last;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Host $host;
proxy_pass http://162.243.33.9:3000;
proxy_redirect off;
}
}
Editar 2
Servidor A
- link
- este servidor serve appA
- quando vou para
/
, devo ver SSR Landing Page
, que é servido de appA
- quando vou para
/hello
, supostamente verei hello
, que é servido no servidor B. Mas, em vez disso, recebi There is no route for the path: /hello
no console do navegador e não vi nenhuma solicitação para o servidor B
Servidor B
- link
- este servidor serve appB
- quando vou para
/hello
, vejo a página.
Peço desculpas por alterar o endereço do servidor com tanta frequência.