Поднимаем прокси-сервер на nginx под Windows

В данном HOWTO мы рассмотрим как на примере nginx установить и настроить простой и быстрый прокси сервер для Windows.

Введение

Если вы хотите установить прокси-сервер, но не хотите изучать сотни страниц документации squid, а затем заниматься отладкой его конфигурации, то можете поднять простой прокси-сервер на nginx.

Для работы нам потребуется только официальный дистрибутив Nginx for Windows, который можно скачать на официальном сайте (на момент публикации статьи это версия 1.4).

Установка сервера

Nginx не требует установки. Просто распакуйте загруженный дистрибутивный Zip архив в любой каталог (желательно без пробелов и русских букв в пути), например, в C:/nginx/.

Для быстрого запуска и остановки сервера рекомендуется создать пакетные файлы start.cmd и stop.cmd в каталоге установки (рядом с файлом nginx.exe).

Пример файла start.cmd:

@echo off
start /D%cd% nginx.exe

Пример файла stop.cmd:

@echo off
start /D%cd% nginx.exe -s quit

На этом установка завершена. Перейдём к настройке.

Настройка сервера

Настройку nginx для Windows я уже описывал в одном из предыдущих HOWTO, поэтому здесь мы сразу рассмотрим настройку nginx как proxy-сервера.

Перейдите в каталог C:/nginx/conf/ (здесь C:/nginx/ — каталог установки сервера) и откройте файл nginx.conf в любом текстовом редакторе (рекомендуется Notepad++).

Замените содержимое файла на такое (ссылка на GitHub):

worker_processes 1;

error_log logs/error.log;

events {
  worker_connections 1024;
}

http {
  include mime.types;
  default_type application/octet-stream;
  sendfile on;
  keepalive_timeout 65;
  gzip on;
  server {
    listen 8080 default;
    access_log logs/proxy.log;
    server_tokens off;
    location / {
      resolver 8.8.8.8;
      proxy_pass http://$host;
      proxy_redirect off;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }
}

Nginx будет прослушивать все интерфейсы на порту 8080 (стандартный для прокси-серверов). Если нужен другой — внесите правку в директиву listen.

Для резолвинга хостов будет использоваться DNS сервер Google — 8.8.8.8 (директива resolver). Вы можете заменить его на IP адрес DNS сервера вашего Интернет-провайдера. Это незначительно ускорит работу.

Удалённым хостам будет передаваться реальный IP-адрес пользователя за прокси-сервером. Если этого делать не нужно, то удалите из конфига данные строки:

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

Автоматический запуск сервера

Если необходимо настроить автоматический запуск сервера, добавьте в планировщик Windows задания на запуск созданного пакетного файла start.cmd от нужного пользователя при загрузке системы.

Убедитесь в наличии прав на чтение и запись в каталог C:/nginx/logs/, иначе сервер не сможет запуститься.

Вы также можете с помощью утилит третьих сторон настроить запуск nginx как службы Windows.

Настройка клиентов

Зайдите в настройки своего Интернет-браузера и укажите IP-адрес и порт, на котором работает настроенный сервер. Включите использование прокси только для протокола HTTP.

Контроль доступа

Если вы хотите ограничить доступ к своему прокси-серверу, то можете использовать директивы allow и deny, например:

allow 1.2.3.4;
deny all;

В данном примере к вашему серверу сможет получить доступ только клиент с IP адресом 1.2.3.4, а все остальные получат ошибку 403 — Доступ запрещён.

1 comment to post

  1. В пункте «Контроль доступа» для полноты картины надо бы указать, что правила вносятся в блок location /

Обсуждение закрыто.