LINUX.ORG.RU
ФорумAdmin

nginx в цепочке прокси

 


0

1

Всем доброго времени суток!

Тут такое дело. Жил-был прокси-сервер на nginx, и было всё хорошо.
А потом между ним и проксируемым сайтом (условно одним), возник другой посторонний прокси сервер. Вот так сетку разделили.
Вопрос: как настроить nginx чтобы он для доступа к сети использовал другой прокси?

Пользователь --> nginx --> другой прокси --> целевой сайт

Знаю, что схема выглядит неудобно и нелогично, так и есть, но сейчас надо сделать именно так.

Я помню, у squid была директива parent для такого случая. А для nginx есть такое?

★★★★★

Ответ на: комментарий от Anoxemian

Насколько я понимаю, дело выглядит так:
пусть сервер nginx имеет имя nginx.lan, а целевой сайт goal.com.
Тогда в обычном режиме пользователь вводит
http://nginx.lan/target.html
и получает target.html с целевого сайта.
Если нацелить директиву proxy_pass на «другой прокси», то сайт goal.com просто потеряется и nginx не будет знать, где брать файл. Вернее, будет пытатся найти его на другом прокси.

fractaler ★★★★★
() автор топика
Ответ на: комментарий от Anoxemian

Буду благодарен, если отправишь в подходящее руководство.
У меня околонулевой опыт по nginx и я плохо понимаю в какую сторону копать.

Возвращаясь к вопросу «чем «целевой сайт» отличается от «другой прокси» ?»
Это два разных хоста. сервер nginx должен получить доступ к целевому сайту через прокси.

fractaler ★★★★★
() автор топика
Ответ на: комментарий от fractaler

правильный ответ: ничем. что случится для тебя если владелец goal.com выставит во фронт прокси? куда и что ты побежишь настраивать на своем прокси?

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

Так, а если учесть, что прокси, который у меня в промежутке стоит, висит на другом порту?
То есть, сайт на tcp/80, а прокси на tcp/8080 ?

fractaler ★★★★★
() автор топика
Ответ на: комментарий от Anoxemian

Даже, немного не так. Если владелец goal.com выставит во фронт прокси, то ничего не изменится, так как сайт будет доступен по тому же адресу.
Но сейчас, когда комп с nginx находится за прокси, сайт недоступен по своему общему адресу. Чтобы получить на него доступ, я должен явно указать прокси в настройках браузера.
А мне нужно, чтобы прокси был указан только на nginx, и пользователь вводил адрес сервера nginx и получал контент с условного goal.com.

fractaler ★★★★★
() автор топика
Ответ на: комментарий от Anoxemian

Больше самому себе отвечаю, вдруг на будущее пригодится. Решение здесь:
https://stackoverflow.com/questions/41493170/nginx-forward-requests-to-anothe...

Это была одна из первых ссылок, которые я нашёл по теме. Но без опыта понять здесь всё не просто. Я даже не сразу поверил, что это именно то, что мне нужно.

Однако, всё равно спасибо. Мысль о том, что разница в ситуации не так уж велика, заставила меня плотнее взяться именно за этот вариант.

Добавлю свои комментарии к оригиналу:

http {
  # resolver 8.8.8.8; # Needed if you use a hostname for the proxy  # Не знаю, не проверил пока. Думаю, проблем с этим не возникнет.
  server_name ~(?<subdomain>.+)\.domain\.com$; # Просто имя сервера. Практически ни на что не влияет. Можно писать localhost.lan

  server {
    listen 80; 

    location / {
      proxy_redirect off;
      proxy_set_header Host $subdomain;# Ничего не меняем, переменные оставляем как переменные.
      proxy_set_header X-Forwarded-Host $http_host; # Ничего не меняем, переменные оставляем как переменные.
      proxy_pass "http://X.X.X.X:8080$request_uri"; # Прописываем IP и порт второго прокси. Что делать, если прокси просит авторизацию -- не знаю. Например, пинать админа прокси, чтобы сделал для вашего хоста исключение.
    }
  }
}

Если кто-то знает, как можно реализовать авторизацию на промежуточном прокси, буду рад это узнать. В Гугле не нашёл.

fractaler ★★★★★
() автор топика
Последнее исправление: fractaler (всего исправлений: 1)
17 февраля 2022 г.
Ответ на: комментарий от anc

Не авторизовывать же всех пользователей от одного. У каждого свой логин-пароль.

fractaler ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.