Скажите мне, что я делаю неправильно. У меня есть конфигурация, где апач слушает во внешнем интерфейсе, размещает домен и действует как прокси для нескольких внутренних серверов. По большей части это работает отлично. Когда определенный URL соответствует proxypass директиве, апач вперед на внутренний сайт. Однако я пытаюсь использовать NAT для передачи другому виртуальному серверу, но это продолжает передавать хосту, но только с внешней стороны. Например, Это - конфигурация прокси:
<VirtualHost *:80>
ServerName example.com
Хост слушает на порте 12000 под именем example.com. ProxyPass вперед корень домена к компьютеру, хост-машине
ProxyPass / http://hostmachine:12000/
Прокси вперед / тарифицирующий портировать 2080 на хост-машине, которая передается, с помощью vbox NAT, от порта 2080, для портирования 80, под именем example.com/billing
ProxyPass /billing http://hostmachine:2080/billing/
Я использую NAT для порта передачи 2080 на хосте, для портирования 80 из виртуального сервера.
vboxmanage showvminfo server1
...
NIC 1 Rule(0): name = http, protocol = tcp, host ip = , host port = 2080, guest ip = , guest port = 80
Вот проблема, когда я направляю внутреннее (даже proxyserver) браузер к hostmachine:2080, я получаю ожидаемый файл HTML от виртуального server1. Когда я пытаюсь получить доступ к нему с внешней стороны, направляющий через прокси я получаю файл HTML от хост-машины
От внутреннего компьютера:
telnet hostmachine 2080
Trying 10.28.45.100...
Connected to hostmachine.
Escape character is '^]'.
GET /billing/index.html
test billing server1
Connection closed by foreign host.
От внешнего браузера:
http://example.com/billing
test billing hostmachine
С внешней стороны это - то, что должно произойти
example.com:80/billing -> ProxyPass -> hostmachine:2080 -> 2080:NAT:80 -> server1:80/billing
Что происходит
example.com:80/billing -> ProxyPass -> hostmachine:80
Вычисленный проблема была с прокси-сервером. Я забыл, что Apache обрабатывает вещи в порядке, они появляются, таким образом, я должен был поместить тарификацию / перед/. Например, в conf файле для домена,
ProxyPass /billing http://hoststmachine:2080/billing/
ЗАТЕМ
ProxyPass / http://hostmachine:12000/