Apache-2.2
如何通過https隧道兩個url(不同的埠)?
我有一台在 1337 上執行的 http 伺服器。
另一個執行在 4040 上的 http 伺服器。
要求:我正在嘗試使用apache2通過埠 443 上的 https 對它們進行隧道傳輸
我已經成功(我認為)在埠 1337 上為伺服器建立隧道,我可以毫無問題地看到內容。
以下是我的虛擬主機配置
<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 指令現在工作不規律。考慮到您應該考慮的其他因素,主要取決於“後端”響應,但要正確進行基本轉發,請始終記住匹配斜杠。
旁注:如果您需要 /parse 在這種情況下工作,您可以重定向到正確的路徑:
RedirectMatch ^/parse /parse/
或您需要的任何 URI。