proxy reverso nginx para passar subdomínio em URL para backend

proxy reverso nginx para passar subdomínio em URL para backend

Com o nginx, é possível fazer proxy de uma URL de entrada para meu aplicativo React para "vê-la" diferente do usuário para manipular variáveis ​​de dados por meio do React Router?

Por exemplo, um usuário acessaria https://foo.app.live.come meu aplicativo veria a solicitação recebida como http://localhost:3000/foo.

Mais alguns exemplos:

  • https://foo.app.live.com===http://localhost:3000/foo
  • https://foo.app.live.com/login===http://localhost:3000/foo/login
  • https://foo.app.live.com/event/1===http://localhost:3000/foo/event/1

Eu testei com este bloco, todo o URI é adicionado ao final do domínio:

location /(.*)$ {
  proxy_pass http://localhost:3000/$1;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "";
  proxy_set_header Host $host;
  proxy_cache_bypass $http_upgrade;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

o que estou perdendo?

Responder1

Você pode fazer isso usando a diretiva rewrite com o sinalizador break no bloco de localização. No seu caso seria:

rewrite (.*) /foo$1 break;

Com esta configuração, seu URI mudará, mas apenas para o servidor upstream e o usuário não notará isso. Para obter mais detalhes, consulte a documentação do nginx aqui:http://nginx.org/en/docs/http/ngx_http_rewrite_module.html Obrigado

Responder2

Tente usar esta versão:

location / {
    proxy_pass http://localhost:3000/foo$uri;
    proxy_http_version 1.1;      
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "";
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

informação relacionada