Redirecionamento simples do Nginx 302 não funciona

1

Estou tentando fazer um redirecionamento simples trabalhando no meu servidor nginx. Estou recebendo o código de resposta 302 de volta, mas o cabeçalho Location não está definido. O que estou perdendo?

Meu caso mínimo (com uma imagem codificada):

location /redirectme {
    return 302 https://www.google.com/logos/doodles/2016/childrens-day-2016-brazil-5739205150900224-hp2x.jpg;
}

Meu caso de uso real (redirecionar o usuário para o URL passado para o parâmetro de consulta url ):

location /redirectme {
  return 302 $arg_url
}

Outra configuração que tentei (configurando manualmente o cabeçalho de localização):

location /redirectme {
  add_header Location $arg_url;
  return 302;
}

Nenhum desses trabalhos realmente redireciona o cliente para o novo URL (retornando apenas o 302). O resto do meu aplicativo da Web funciona muito bem, mas não esse redirecionamento. Se isso fizer diferença, estou trabalhando em um bloco ssl server {...} . Alguma ideia? Obrigado!

----- UPDATE ------

Aqui está o bloco server inteiro ...

server {
  listen   443;
  server_name myserver.com;
  access_log /path-to/myserver.com-ssl.access.log;

  ssl on;
  ssl_certificate /path-to/myserver.com.crt;
  ssl_certificate_key /path-to/myserver.com.key;

  ssl_client_certificate /path-to/clientkey.pem;
  ssl_verify_client on;
  ssl_verify_depth 1;

  keepalive_timeout 5;

  root /srv/www/myserver/public/;

  location /redirectme {
    return 302 $arg_url;
  }

  location / {
    try_files $uri/index.html $uri/index.htm @unicorn;
  }

  location @unicorn {
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-CLIENT-VERIFY $ssl_client_verify;
    proxy_redirect off;

    proxy_read_timeout 60;
    proxy_send_timeout 60;

    # If you don't find the filename in the static files
    # Then request it from the unicorn server
    if (!-f $request_filename) {
      proxy_pass http://unicorn_myserver.com;
      break;
    }
  }

  error_page 500 502 503 504 /500.html;
  location = /500.html {
    root /srv/www/myserver/public/;
  }
}

E a resposta de fazer curl -i :

HTTP/1.1 302 Found
Content-Type: application/json
Content-Length: 0
Connection: keep-alive
Date: Fri, 14 Oct 2016 18:37:32 GMT
x-amzn-RequestId: 44e865b2-923d-11e6-a60a-5f6291eee9a8
X-Cache: Miss from cloudfront
Via: 1.1 aa89533ad2ec5e0edba466c9920bd000.cloudfront.net (CloudFront)
X-Amz-Cf-Id: 7dzQ9JQK380hFD-nFyJxm6mIWT5D4mWzvCbSAhDaa-pHwpF4oZHszw==

Também pode ser relevante (não entendo como, mas talvez) que tenho o Amazon API Gateway parado na frente de minhas solicitações, fazendo proxy diretamente para o servidor (note: o ssl_client_certificate /path-to/clientkey.pem; está configurado para aceitar somente solicitações do API Gateway).

    
por readyornot 14.10.2016 / 02:24

0 respostas