Configuração do proxy Nginx para acessar a API de backend via proxy HTTP

1

Eu preciso que o servidor da Web Nginx conecte-se a um servidor https que escuta na porta 443. O servidor https não pode ser acessado diretamente por Nginx server machine e para alcançar o servidor https que o servidor nginx precisa defina os parâmetros http_proxy e https:proxy .

Antes, estamos usando o Apache e conseguimos o mesmo usando o parâmetro ProxyRemote * http://10.23.45.32:3128 , que permite que o servidor apache se conecte ao servidor https remoto por meio do servidor proxy.

Estamos no processo de passar do apache para o Nginx e precisamos saber como adicionar as regras de proxy para que Nginx server possa passar a solicitação para https server.

Eu tenho a configuração abaixo para o Nginx.

server {
  listen       80;
  server_name  localhost;
  access_log  /var/log/nginx/localhost.access.log;
  location / {
         proxy_pass http://localhost:9000;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection 'upgrade';
         proxy_set_header Host $host;
         proxy_cache_bypass $http_upgrade;
  }

  #below path is working fine
  location /cities.json {
    proxy_pass      http://hostname.net:8080/cities.json;
  }
  #below rule is working fine
  location /states/ {
    proxy_pass     http://hostname.net:8080;
  }
  #below rule is giving 504 gateway timeout error.
  location /auth {
    #cannot call https://authenticationserver.net directly and need to go through proxy by setting http_proxy to http://proxy.host.net:3128
    proxy_pass    https://authenticationserver.net:443;
  }
}

No Apache, eu costumava fazer a configuração abaixo para definir o proxy:

<VirtualHost *:8000>
  ServerName hostname.net
  <Location /balancer-manager>
    SetHandler balancer-manager
    Order Deny,Allow
    Deny from all
    Allow from all
  </Location>
  <Proxy balancer://authncluster>
    BalancerMember https://target.host.net
  </Proxy>
  <Proxy *>
    Order Allow,Deny
    Allow From All
  </Proxy>
  ProxyRemote * http://proxy.host.net:3128
  SSLProxyEngine On
  ProxyPreserveHost On
  ProxyPass /balancer-manager !
  ProxyPass /authn/ balancer://authncluster/authn/
  ProxyTimeout 300
</VirtualHost>

Espero que isso ajude. Por favor, deixe-me saber como fazer a configuração no Nginx.

    
por zilcuanu 11.02.2016 / 05:08

1 resposta

0

Algo parecido com isso fará (os caminhos estarão errados porque sua pergunta não parece especificar detalhes suficientes. A chave é que o nginx escolhe a correspondência mais específica possível - você pode estar pronto sobre isso aqui .

location / {
   proxy_pass http://localhost:9000;
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection 'upgrade';
   proxy_set_header Host $host;
   proxy_cache_bypass $http_upgrade;
}

location /otherurl {
  proxy_pass http://localhost:9001;
  # etc
}

location /thirdurl {
  proxy_pass http://localhost:9002;
  # etc
}
    
por 11.02.2016 / 05:53