nginx proxy_pass nome do host de configuração

1

Aqui está o meu bloco de servidor do nginx.conf, estou tentando reescrever meus pedidos, o que acontece bem, mas o nome do host do upstream não está sendo definido corretamente, ele sempre resolve o endereço IP real, mas minha API é hospedada como host virtual no apache, então o ponto final sempre retorna 500, alguma idéia de como eu posso consertar isso?

listen 8090;
server_name example.dev.xyz.com;

set $api_path http://example-dev/api;

location ~ ^/api/ {
    rewrite  ^/api/(.*)  /$1  break;
        proxy_pass $api_path;
        proxy_redirect off;
        proxy_set_header Host $server_name ;
        proxy_set_header X-Real-IP $remote_addr ;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 }

aqui estão os detalhes dos registros nginx

    ...top/api-aggregator-master/sandbox/lua/system/sandbox.lua: in function <...top/api-aggregator-master/sandbox/lua/system/sandbox.lua:1> while sending to client, client: 127.0.0.1, server: example.dev.xyz.com, request: "GET /aggr/conversations HTTP/1.1", host: "localhost:8090"
2013/10/02 09:21:57 [warn] 27711#0: *8 an upstream response is buffered to a temporary file /Users/santthosh.selvadurai/Desktop/api-aggregator-master/sandbox/proxy_temp/4/00/0000000004 while reading upstream, client: 127.0.0.1, server: example.dev.xyz.com, request: "GET /aggr/conversations HTTP/1.1", subrequest: "/v1/GetTopicPage", upstream: "http://XX.XX.110.48:80/api", host: "localhost:8090"
2013/10/02 09:21:57 [error] 27711#0: *8 lua entry thread aborted: runtime error: ...top/api-aggregator-master/sandbox/lua/system/sandbox.lua:86: attempt to concatenate field 'function_to_call_file' (a nil value)
stack traceback:
coroutine 0:
    
por Santthosh 02.10.2013 / 18:27

1 resposta

1

Como você está configurando o cabeçalho "Host" via proxy_set_header , é possível alterar a diretiva proxy_pass para ser o endereço IP real do servidor de back-end, em vez de depender do DNS. Tomemos por exemplo;

location / {
  proxy_pass http://10.0.0.2;
  proxy_set_header Host www.example.com;

  # various other required directives omitted
}

Isso iniciará uma conexão com 10.0.0.2 na porta 80, enviando o cabeçalho Host de www.example.com . Se www.example.com resolvido para 10.0.0.2 , seria o mesmo que:

location / {
  proxy_pass http://www.example.com;
}

Espero que isso ajude.

    
por 16.07.2014 / 09:38

Tags