2017-02-19 38 views
1

Это моя установка:Как перенаправить запросы на IIS и/или Apache, запущенные на разных машинах, 1 общедоступный IP-порт 80

Получил домен: domain.com.

В моей локальной сети я получил DNS, предоставляемые активным поле каталога,

веб-сервер IIS, работающий на порту 80, имя хоста iis.domain.com, и это имеет сайты iis1.domain.com, iis2.domain.com

веб-сервер Apache, работающий на порту 80, имя хоста apache.domain.com, с сайтами apache1.domain.com и apache2.domain.com.

В моей локальной сети я могу получить доступ ко всем этим сайтам очень хорошо. У меня также есть внешние записи dns для iis1, iis2, apache1 и apache2.

У меня есть только один общедоступный IP-адрес, и я хотел бы установить еще одну коробку, которая будет передавать порт в Интернет (порт для порта 80 и 443). Я хотел бы знать, что установить на этом поле и как его настроить.

Я посмотрел на nginx, haproxy и IIS ARR, но я хотел бы знать, какие из них являются самыми легкими в настройке и имеют наименьшие издержки.

На мой взгляд, я хотел бы указать что-то вроде .... нормально, если это запрос для сайта iis1.domain.com, а затем отнести его к веб-серверу IIS, и если он предназначен для apache1.domain.com затем перейдите на веб-сервер Apache. Я хотел бы пойти с Linux-решением, но я не уверен, что и как его настроить.

Заранее спасибо.

P.S. Я видел возможное решение here.

Будет что-то вроде этой работы?

server { 

     listen 80 default_server; 

     server_name iis1.domain.com; 

     location/{ 
         proxy_pass http://iis1.domain.com/; 
     } 

} 

server { 

     listen 80 default_server; 

     server_name apache1.domain.com; 

     location/{ 
         proxy_pass http://apache1.domain.com/; 
     } 

} 

ответ

0

Я бы с HAProxy (самый простой на мой взгляд)
просто быть очень осторожным с внешним против внутренних DNS. пример, который у вас есть в вашем вопросе вперед, на dns .... который указывает на прокси (внешний) .... который указывает на dns ... я думаю, вы понимаете мой смысл.

HAProxy будет указывать на ваш бэкэнды IP-адрес, так как внутренний и внешний DNS будет указывать на прокси-сервер и получить маршрутизируемый штраф до предполагаемого бэкэнда

конфиг HAProxy будет выглядеть примерно так:

global 
    # default globals 
defaults 
    # default globals 
frontend http-in 
    bind      YOUR.IP.GOES.HERE:80 
    bind      YOUR.IP.GOES.HERE:443 ssl crt PATH/TO/CERT-FILE.PEM no-sslv3 
    mode      http 
    option      httplog 
    option      httpclose 
    option      forwardfor 

    acl iis1     hdr(Host) -i iis1.domain.com 
    acl iis2     hdr(Host) -i iis2.domain.com 
    acl apache1     hdr(Host) -i apache1.domain.com 
    acl apache2     hdr(Host) -i apache2.domain.com 

    use_backend iis if iis1 
    use_backend iis if iis2 
    use_backend apache if apache1 
    use_backend apache if apache2  

backend iis 
     server IIS  xxx.xxx.xxx.xxx:80 check 

backend apache 
     server APACHE xxx.xxx.xxx.yyy:80 check 
+0

мне удалось на самом деле получить эту работу, установив флажок Линукс с Nginx. –

+0

Большое спасибо за ответ. Мне нравится ваше решение, оно более элегантно, чем мое. Тем временем я уже реализовал свою работу, но я соглашусь с вами, поскольку я уверен, что это работает. Я только что видел сравнительное видео между haproxy и nginx. [link] (https://www.youtube.com/watch?v=yQvcHy_tPjI) В экстремальных условиях это показывает, что nginx работает немного лучше и не может служить запросу. –

0

Мне удалось заставить это работать, установив Linux-модуль с nginx. Порт 80 из этого окна отправляется в Интернет.

В/etc/nginx Я добавил строку для поиска других файлов конфигурации -> include /etc/nginx/sites-enabled/*.conf; ,

Таким образом, в/и т.д./Nginx/сайты с поддержкой/я создал один конфигурационный файл, с этой информацией:

server { 
    listen 80; 
    server_name apache1.domain.com; 
    location /{ 
     proxy_pass http://apache1.domain.com; 
    } 
} 

server { 
    listen 80; 
    server_name apache2.domain.com; 
    location /{ 
     proxy_pass http://apache2.domain.com; 
    } 
} 

server { 
     listen 80; 
     server_name iis1.domain.com; 
     location /{ 
       proxy_pass http://iis1.domain.com; 
     } 
} 

server { 
     listen 80; 
     server_name iis2.domain.com; 
     location /{ 
       proxy_pass http://iis2.domain.com; 
     } 
}