Задача
Представим ситуацию, что у Вас есть несколько доменов:
- site1.com
- site2.com
- site3.com
Несколько веб серверов установленных на Windows внутри локальной сети:
- server1 — 10.0.0.1
- server2 — 10.0.0.2
- server3 — 10.0.0.3
Всего один внешний IP адрес:
- 11.22.33.44
И вам необходимо настроить перенаправление с
- site1.com на 10.0.0.1
- site2.com на 10.0.0.2
- site3.com на 10.0.0.3
Реализация
Первое что Вам потребуется — это Nginx
Скачать свежий можно здесь
Его нужно будет установить на любую машину, которая будет выступать в роли reverse-proxy сервера
Установка крайне простая — распаковать по пути C:\nginx
Создать два файла cmd внутри папки nginx
Для запуска start.cmd
@echo off
start /D%cd% nginx.exe
Для остановки stop.cmd
@echo off
start /D%cd% nginx.exe -s quit
Либо использовать существующий, например на server1
Настройка Nginx
Необходимо отредактировать файл C:\nginx\conf\nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
<b>#Server 1</b>
server {
listen 80;
#Здесь нужно указать домен
server_name <b>site1.com</b>;
location / {
#Здесь нужно указать IP адрес сервера
proxy_pass http://<b>10.0.0.1:8080</b>;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
<b>#Server 2</b>
server {
listen 80;
#Здесь нужно указать домен
server_name <b>site2.com</b>;
#Redirect to HTTPS
location / {
#Здесь нужно указать IP адрес сервера
proxy_pass http://<b>10.0.0.2:80</b>;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
<b>#Server 3</b>
server {
listen 80;
#Здесь нужно указать домен
server_name <b>site3.com</b>;
#Redirect to HTTPS
location / {
#Здесь нужно указать IP адрес сервера
proxy_pass http://<b>10.0.0.3:80</b>;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Хочу обратить внимание, что у server1 IP указан с портом 8080
proxy_pass http://<b>10.0.0.1:8080</b>;
Это из-за того, что веб-сервер этой машины нужно будет отконфигурировать на прослушивание порта 8080
Настройка маршрутизатора
На маршрутизаторе необходимо создать правило NAT для порта 80
Чтобы все запросы на адрес 11.22.33.44 по протоколу HTTP попадали на 10.0.0.1
Заключение
Если все настройки верны, то Вам остается только запустить nginx (либо перезагрузить существующий) с помощью start.cmd