nginx - como reverter tudo de proxy, incluindo diretórios e ativos

0

Queremos duplicar o nosso site (sim, estamos cientes do conteúdo duplicado). domain-a.com precisa estar disponível também como domain-b.com .

Minha configuração é assim:

server {

  listen 80;
  server_name www.domain-b.com;

  location / {
    autoindex off;
    proxy_buffering   off;
    # rewrite  (.*) /$1 break;
    proxy_pass http://104.25.206.103;  # Cloudflare
    proxy_set_header Host www.domain-a.com;
    proxy_redirect    default;

  }
}

Isso funciona para www.domain-b.com/ . No entanto www.domain-b.com/info/about está retornando 503. Mesmo para /test.jpg

Como exatamente podemos usar literalmente tudo?

    
por huan son 11.01.2017 / 06:28

2 respostas

1

A solução teria sido:

server_name www.domain-a.com www.domain-b.org;

ou apenas

server_name *;

mais isto

proxy_set_header        Host $host;

que deixa dinâmico.

503 Bad gateway geralmente se refere a um servidor upsteam não acessível. Não necessariamente algo de errado com a configuração. Também poderia ter sido o% errado X-Forwarded-Host do cabeçalho de proxy_set_header que era estático e o cloudflare recusou veiculá-lo.

    
por 03.03.2017 / 19:45
0

minha resposta é uma solução um pouco diferente.

acabamos criando nosso próprio "proxy" com base no ruby / sinatra, incluindo o tratamento de cookies.

get /(.*)/ do
  if (asset? || download?) && !exception?
    return redirect to(target_url), 301
  end

  begin
    agent = Mechanize.new
    cookies.each.map{ |k,v| agent.cookie_jar << Mechanize::Cookie.new(name: k, value: v, domain: ".we.us", path: "/") }

    response = agent.get(target_url)

    cookies.clear
    agent.cookies.map{ |cookie| cookies[cookie.name] = cookie.value }

    content_type(response.response['content-type'])
    send("modify_#{target}", response.body)

  rescue Mechanize::ResponseCodeError
    p "throw a 404!"
    status 404
  end
end

def asset?
  # binding.pry
  extensions = %W(.jpg .png .gif .jpeg .ico .woff .ttf .gif .woff2 .cur)
  url = target_url
  url = url.split("?").first
  url.downcase.end_with?(*extensions)
end



def target_url
  target_host + query_string
end

def query_string
  # binding.pry
  #params['captures'].first
  if env["PATH_INFO"] == "/"
    "/"
  else
    env["REQUEST_URI"].scan(Regexp.new("#{env["PATH_INFO"]}.*")).first 
  end
end
    
por 13.01.2017 / 05:59