Apache proxypass 将子域重定向到端口和路径

Apache proxypass 将子域重定向到端口和路径

好的,我不确定如何措辞标题,但我会尝试解释我的情况。

我有一个运行 debian 的家庭服务器,除其他外,它还运行“plex 媒体服务器”。

我使用我拥有的域的子域远程访问我的服务器,我们称之为“我的域名“。我在子域名上访问我的服务器”home.mydomain.com“(目前只显示一些基本的 html)然后我访问“Plex 网络界面”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

您可以使用重写规则摆脱 Web 上下文:

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

相关内容