NGINX redirecionando em vez de proxy

1

Houve algumas perguntas como esta, mas as mais semelhantes não foram respondidas e o restante tem fatores de confusão. Uma implementação do nginx anterior que funciona bem está redirecionando em vez de fazer proxy. A seção relevante do nginx.conf se parece com isso;

location /timesheets/ {
      gzip on;
      gzip_types    text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
      gzip_proxied   any;
      gzip_min_length 1000;
      gzip_comp_level 2;
      gzip_http_version 1.0;
      gzip_buffers 16 8k;

      gunzip on;
      gzip_static on;
      # Disable for IE < 6 because there are some known problems
      gzip_disable "MSIE [1-6].(?!.*SV1)";
      # Add a vary header for downstream proxies to avoid sending cached gzipped files to IE6
      gzip_vary on;

      proxy_set_header X-Forwarded-Host $host;
      proxy_set_header X-Forwarded-Server $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_pass http://timesheetserver.fqdn.com.au:8216$request_uri;
  proxy_intercept_errors on;
}

Ao acessar o servidor na URL na parte server_name, o conteúdo no servidor timesheets na porta 8216 deve ser intermediado por proxy para eles. Por alguma razão, ele está respondendo com 302 ao servidor proxy_pass e, como os usuários não podem acessar a porta 8216, ele está falhando. O que causaria isso?

UPDATE: É 302 para o servidor proxy_pass, se o index.html é deixado fora do final. Ele funciona bem se o index.html for anexado manualmente. Eu adicionei um index index.html; diretiva, mas não parece manipular o arquivo que está sendo deixado de fora - como resolvo?

    
por Elomis 17.05.2017 / 06:15

1 resposta

1
  1. confirme para acessar o link do seu servidor proxy reverso nginx com curl, wget etc.
  2. Se você deseja proxy_pass com nome (não endereço IP), defina diretiva de resolvedor (Servidor DNS) com opção ipv6 válida em http, servidor, bloco de localização.
  3. Adição define diretiva resolver_timeout.

location /timesheets/ {
      # http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver
      resolver 127.0.0.1 valid=30s ipv6=off;
      # http://nginx.org/en/docs/http/ngx_http_core_module.html#resolver_timeout
      # give up and response error 
      resolver_timeout 5s;
      ### your existing configuration :-)
}

É melhor usar FQDN (nome de domínio totalmente qualificado) para proxy reverso do que timesheetserver .

Ref: link

    
por 17.05.2017 / 07:45

Tags