Як використовувати Nginx як проксі-сервер HTTP / HTTPS? [зачинено]


16

Чи можливо використовувати Nginx як проксі-сервер HTTP / HTTPS?

Відповіді:


14

Після деяких тестів я виявив, що працює для мене наступна конфігурація.

server {
  server_name ~^(www\.)?(?<domain>.+)$;
  access_log /var/log/nginx/proxy.access.log main;
  error_log /var/log/nginx/proxy.error.log crit;
  listen 10.255.1.13:8080;
  resolver 8.8.8.8;
  location / {
    proxy_pass http://$domain;
    proxy_redirect off;
    proxy_set_header Host $host;
    # Optional headers 
    # proxy_set_header X-Real-IP $remote_addr;
    # proxy_set_header X-Forwarded-For
    # $proxy_add_x_forwarded_for;
  }
}

Ця конфігурація працює лише для HTTP, а не для HTTPS.


4
Хороша робота! Трохи натяків. 1: listen ... default_server. 2: server_name ""або server_name _. 2: proxy_pass $scheme://$http_host. Обмеження: прихилення до верхніх потоків лише з портом 80; не обробляє перенаправлення себе.
Олександр Азаров

$ схема корисна лише в тому випадку, якщо vhost також слухає на https - але тоді у вас є людина, яка перебуває в середньому ризику, і помилки сертифікату https, з якими можна боротися ... обидва є великими проблемами безпеки
anthonysomerset

8

Я думаю, що коротка відповідь "ні", вона не була написана для прямого доступу

ОНОВЛЕННЯ

щоб уточнити мою заяву вище:

NGINX ніколи не був написаний з врахуванням прямого прогресу - хоча його віддалено можна якось виконати за допомогою конфігурації, щоб зробити те, що ви хочете, вам доведеться розуміти наступні обмеження:

  • Підтримка кешу майже не існує (одна з основних причин використання проксі)
  • Не можна використовувати будь-що, крім трафіку порта 80 (тобто не входити в скриньки cpanel через нього)
  • Немає підтримки трафіку на основі SSL
  • Немає підтримки для стандартних проксі-заголовків та заголовків кешу http (я розумію, що вони просто проходять через
  • Немає підтримки для інших протоколів, які підтримують проксі-сервери - наприклад, VPN тощо

Можливі інші міркування, невідомі на даний момент:

  • Можливо DoS проксі як відсутність реальної здатності до тонкого зернистого контролю доступу / автентифікації (nginx має підтримку різних методів контролю доступу, але незрозуміло, як це може вести себе в контексті прямого проксі)
  • Можливі ризики безпеки для машини, на якій встановлено nginx, оскільки можливі отвори в безпеці, які не враховуються через використання способом, який він не був призначений для роботи

Контрприклад, див .: ef.gy/using-nginx-as-a-proxy-server
kkurian

можливо, моя відповідь повинна була бути зрозумілішою, це не було спроектовано для того, щоб робити проксі вперед - мавпа-патч зусиль не запропонує повну підтримку проксі-сервера, як прокси-запити до нестандартних портів (порт 80)
anthonysomerset

3

Якщо ви хочете використовувати проксі-сервер HTTP / HTTPS, слід використовувати Squid. Було написано робити саме так. Nginx був написаний, щоб діяти як зворотний проксі і балансир завантаження, але не прямий проксі.


Я знаю про кальмари / ой / tinyproxy / тощо. Я просто задаю це питання заради академічного інтересу
vlad
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.