Назад | Перейти на главную страницу

Как использовать Nginx в качестве прокси-сервера HTTP / HTTPS?

Можно ли использовать Nginx в качестве прокси HTTP / HTTPS?

После некоторых тестов я обнаружил работает на меня следующая конфигурация.

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.

Я думаю, короткий ответ - нет, он не был написан для прямого проксирования

ОБНОВИТЬ

чтобы прояснить мое заявление выше:

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

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

Возможные другие соображения, которые в настоящее время неизвестны:

  • Возможно DoS-атака на ваш прокси-сервер из-за отсутствия реальной возможности детализированного контроля доступа / аутентификации (nginx поддерживает различные методы контроля доступа, но неясно, как это может вести себя в контексте прямого прокси)
  • Возможные риски безопасности для машины, на которой установлен nginx, потому что могут быть возможные дыры в безопасности, которые не рассматриваются из-за использования способом, для которого он не был разработан

Если вы хотите использовать прокси HTTP / HTTPS, вам следует использовать Squid. Это было написано именно для этого. Nginx был написан как обратный прокси и балансировщик нагрузки, но не как прямой прокси.