Apache proxypass 將子網域重定向到連接埠和路徑

Apache proxypass 將子網域重定向到連接埠和路徑

好吧,我不知道如何表達標題,但我會盡力解釋我的情況。

我有一台運行 Debian 的家庭伺服器,除此之外,它還運行“plex 媒體伺服器”。

我使用我擁有的網域的子網域遠端存取我的伺服器,我們稱之為“mydomain.com“。我在子網域上訪問我的伺服器”home.mydomain.com」(目前僅顯示一些基本的 html),我訪問“Plex Web 介面”home.mydomain.com:32400/web」。

我想做的是重定向子網域“plex.mydomain.com“ 到 ”home.mydomain.com:32400/web”以便更輕鬆地存取“plex 介面”。


我已經成功完成了一半,但我不確定如何繼續,或者這實際上是否可能做到。

到目前為止,這些是我的虛擬主機:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName home.mydomain.com

    DocumentRoot /var/www/home.mydomain.com/public_html

    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerName plex.mydomain.com
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://localhost:32400/
    ProxyPassReverse / http://localhost:32400/
</VirtualHost>

這允許我訪問“plex”接口plex.mydomain.com/web”,但我還是想擺脫“/網路“ 部分。

為此,我嘗試了:

ProxyPass / http://localhost:32400/web
ProxyPassReverse / http://localhost:32400/web

這根本不起作用,只是給了我的“404 Not Found”。


那麼,這個問題可以用我想要的方式解決嗎?如果是這樣,我該怎麼做。

非常感謝任何幫助。

答案1

您可以使用重寫規則擺脫網路上下文:

ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:32400/
ProxyPassReverse / http://127.0.0.1:32400/

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/web
RewriteCond %{HTTP:X-Plex-Device} ^$
RewriteRule ^/$ /web/$1 [R,L]

注意第二部分中的重寫條件。

僅供參考,我從這裡得到了這些設定:http://matt.coneybeare.me/how-to-map-plex-media-server-to-your-home-domain/

您應該檢查一下所有的細節。特別值得注意的是設定一些基本身份驗證來保護您的主機。

答案2

這是改變後的解決方案:

新增 DNAT 規則以將所有流量從 80 重定向到 32400。

iptables -t nat -I PREROUTING -p tcp -d X.X.X.X--dport 80 -J DNAT --to-destination X.X.X.X:32400

所以它看起來像這樣:

sudo iptables -t nat -I PREROUTING -p tcp -d 192.168.1.1 --dport 80 -j DNAT --to-destination 192.168.1.1:32400

請記住您的防火牆規則:

    iptables -I INPUT -p tcp --dport 32400 -j ACCEPT
    iptables -I INPUT -p tcp --dport 80 -j ACCEPT

並儲存您的防火牆規則:

    service iptables save

相關內容