Я хотел бы отобразить весь трафик на 80 и 443 с foo.com на внутренний сервер: 192.168.1.101. У меня установлен VirtualHost (Apache 2.2 на Ubuntu) следующим образом (обратите внимание, мне пришлось разбить гиперссылки ниже, потому что я «новый пользователь»):
<VirtualHost *:80>
ServerName foo.com
ServerAlias *.foo.com
ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://192.168.1.101/
ProxyPassReverse / http://192.168.1.101/
</VirtualHost>
И это отлично работает для HTTP-трафика. Однако я не могу сделать то же самое для https. Я пытался:
Изменение VirtualHost *: 80 на * - но это не работает (мне нужно http-> http и https-> https)
Создание новой записи VirtualHost для *: 443, которая перенаправляет на http://192.168.1.101/, но это тоже не удается (тайм-ауты браузера)
Я поискал здесь и в других местах, и ближайший вопрос, который я смог найти, был этот, но это не совсем ответ.
Кроме того, просто из любопытства я попытался сопоставить все порты с https (изменив две строки ProxyPass с http на https (и удалив: 80 из VH), и это тоже не сработало. Как бы вы это сделали? ?
Есть предположения? Заранее спасибо.
Раньше это работало для меня
<VirtualHost *:443>
ServerName domaine.com
SSLProxyEngine on
<Location />
ProxyPass https://www.something.com/
ProxyPassReverse https://www.something.com/
</Location>
</VirtualHost>
Для меня работает следующее:
<VirtualHost A.B.C.D:443>
...
ProxyPass / https://192.168.1.101/
ProxyPass / https://192.168.1.101/
</VirtualHost>
(Куда A.B.C.D
это ваш публичный IP-адрес, очевидно)
Я бы лично полностью пропустил Apache и использовал IPTABLES для перенаправления всего трафика на 80 и 443 на требуемый IP, я бы предположил, что это даст большую производительность.
(Предполагается, что у вас есть доступ на машине для редактирования правил брандмауэра).
$iptables -A PREROUTING -t nat -i $EXTIF -p tcp --dport 80 -j DNAT --to 192.168.1.101:80
$iptables -A FORWARD -p tcp -m state --state NEW -d 192.168.1.101 --dport 80 -j ACCEPT
краткое упражнение из моего брандмауэра, где я делаю именно то, что вы пытаетесь сделать.
Если вы хотите, чтобы весь запрос был перенаправлен в защищенную сеть, то есть. через https добавьте следующее:
<VirtualHost *:443>
ServerName ngmlx441
SSLEngine on
KeepAliveEnabled ON
SSLCipherSuite HIGH:MEDIUM
SSLProtocol all
SSLProxyEngine on
SecureProxy ON
SSLProxyEngine on
SSLCertificateFile /etc/httpd/conf.d/servername.crt
SSLCertificateKeyFile /etc/httpd/conf.d/servername.key
SSLCACertificateFile /etc/httpd/conf.d/orgination.crt
</VirtualHost>