Как мне настроить свои веб-серверы на работу, как описано ниже?
HTTP-запрос: mypublic.com ---> нормально обрабатывается nginx, поскольку он уже настроен (listen 80;
)
HTTP-запрос: myprivate.com ---> обрабатывается apache, настроенным для работы на 8080 (listen 8080
)
Я бы не хотел включать порты при вводе адреса в браузере, какой-то макет (прокси? / Squid?) На nginx. Оба домена указывают на мою машину и настроены по имени.
Вы не можете сделать это напрямую с DNS, поскольку DNS не работает с портами.
Вы можете использовать какую-либо форму проксирования на порту 80 для передачи запросов на порт 8080. Примером с apache может быть
<VirtualHost *:80>
Servername contoso.com
.
.
.
</VirtualHost>
<VirtualHost *:80>
Servername apache.contoso.com
ProxyRequests Off
<Proxy *>
Order deny,allow
allow from all
</Proxy>
ProxyPreserveHost On
ProxyPass / http://contoso.com:8080/
ProxyPassReverse / http://contoso.com:8080/
</VirtualHost>
С помощью nginx вы можете сделать это, настроив два виртуальных сервера и proxy_pass, подключив один из них к Apache, работающему на порту 8080:
server {
listen 80;
server_name mypublic.com;
...
}
server {
listen 80;
server_name myprivate.com;
location / {
proxy_pass http://myprivate.com:8080;
}
}
Смотрите здесь документы:
Для nginx создайте виртуальный хост для myprivate.com и передайте его apache, настроенному для прослушивания myprivate.com на порту 8080.
сервер {слушать 80; имя_сервера myprivate.com;
# proxy it to Apache listening on 127.0.0.1:8080
location / {
proxy_pass http://127.0.0.1:8080;
}
}
Это должно сработать.
Затем на apache создайте виртуальный хост для прослушивания myprivate.com.
Вы можете использовать apache2 mod_rewrite. Вы можете определить соответствующие условия и правила для перезаписи запрошенного URL.