Назад | Перейти на главную страницу

как туннелировать два URL-адреса (разные порты) через https?

У меня один 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, который вам нужен.