Nginx - O proxy reverso está tentando acessar o backend por IP em vez do nome de domínio

1

Estou tentando configurar um proxy reverso no nginx para fornecer conteúdo estático. Estou tendo problemas para configurar corretamente; abaixo está minha configuração nginx:

server {
    listen       80;
    server_name  mysub.domain.com;
    access_log off;

   resolver 8.8.8.8 valid=5s;
   set $backend "www.originaldomain.com";
   location / {

      proxy_cache my_cache;
      proxy_pass https://$backend;
   }
}

Se eu tentar um recurso de originaldomain sobre mysub.domain.com .. não funcionaria .. e se eu vir o log de erros, parece que o nginx está solicitando o recurso ao IP do originaldomain como abaixo;

2018/06/09 17:47:13 [crit] 9825#0: *111 mkdir() "/store/cache/1" failed (13: Permission denied) while reading upstream, client: 112.123.121.11, server: mysub.domain.com, request: "GET /path/to/image.png HTTP/1.1", upstream: "https://101.181.11.120:443/path/to/image.png", host: "mysub.domain.com"

e ao olhar para cima image.png sobre IP, ele não pode ser encontrado, para baixar o recurso corretamente ele precisa ser pesquisado através do nome do domínio ao invés de seu IP.

Alguma idéia?

Obrigado antecipadamente.

    
por Alyas 09.06.2018 / 19:59

1 resposta

1

O nginx só pode se conectar a endereços IP, é assim que o TCP / IP funciona.

Na sub-rotina location / , você precisa adicionar uma linha

proxy_set_header Host $backend;

para passar essa linha de cabeçalho para o backend.

Eu também investigaria esse erro mkdir() "/store/cache/1" failed (13: Permission denied) . Configure outro local para os arquivos de cache ou crie /store/cache com permissões adequadas para o nginx de ID em execução como.

    
por 11.06.2018 / 10:07