У меня один http-сервер работает на 1337.
и еще один http-сервер, работающий на 4040.
Требование: Я пытаюсь туннелировать их через https на порт 443, используя apache2
У меня уже получилось (думаю) при туннелировании сервера на порт 1337, и я могу видеть содержимое без проблем.
вот моя конфигурация vhost
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
ServerName 127.0.0.1
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
ProxyPreserveHost On
ProxyPass /parse http://localhost:1337/
ProxyPassReverse / http://localhost:1337/
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
теперь я также хочу добавить 4040, чтобы он был защищен, но когда я добавлю еще
proxyPass /dashboard http://127.0.0.1:4040/
ПРОБЛЕМА Не работает должным образом. и он отображает только заголовок страницы и значок.
Я мог бы делать всю эту вещь с обратным прокси неправильно, любезно приветствую любые объяснения!
(ОС: Ubuntu 14.04)
При использовании proxypass вам необходимо сопоставлять косые черты вперед и назад, то есть, если вы не заканчиваете косой чертой исходный URI, который вы хотите переслать, вы не должны заканчиваться на / цель и так далее.
Единственное исключение: http://localhost:1337
эквивалентно http://localhost:1337/
поэтому никогда не следует делать: ProxyPass /parse http://localhost:1337
(или иначе ожидайте неожиданного)
Итак, правильный способ использования ProxyPass:
ProxyPass /parse/ http://localhost:1337/
ProxyPass /dashboard/ http://127.0.0.1:4040/
В основном поэтому ваши директивы proxypass теперь работают хаотично. Примите во внимание, что есть и другие соображения, которые вы должны принять во внимание, в основном в зависимости от ответов «бэкэнда», но для правильной базовой пересылки всегда не забывайте сопоставлять косые черты.
SideNote: если вам нужен / parse для работы в этом случае, вы можете просто перенаправить на правильный путь: RedirectMatch ^/parse /parse/
или любой другой URI, который вам нужен.