Мы хотим дублировать наш веб-сайт (да, мы знаем дублированный контент). domain-a.com должен быть доступен также как domain-b.com .

Мой конфиг выглядит так:

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;

  }
}

Это работает для www.domain-b.com/ . Однако www.domain-b.com/info/about возвращает 503. То же самое для /test.jpg

Как именно мы можем прокси буквально все?

2 ответа2

1

Решение было бы:

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

или просто

server_name *;

плюс это

proxy_set_header        Host $host;

который оставляет это динамичным.

503 Bad gateway обычно относится к недостижимому серверу upsteam. Не обязательно что-то не так с конфигом. Также мог быть неправильный заголовок X-Forwarded-Host от proxy_set_header который был статическим, и облачный флаг отклонил его обслуживание.

0

мой ответ немного другое решение.

в итоге мы создали собственный прокси на основе ruby/sinatra, включая обработку файлов cookie.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .