好吧,我不知道该怎么说,但我会尽力解释我的情况。
我有一个运行debian的家庭服务器,其中包括运行“plex media server”。
我使用子域名远程访问我的服务器到我自己的域名,我们称之为“ mydomain.com ”。 我在子域“ home.mydomain.com ”(目前只是显示一些基本的html)上访问我的服务器,并访问“ home.mydomain.com:32400/web ”上的“Plex web界面”。
我想要做的是将子域名“ plex.mydomain.com ”redirect到“ 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.mydomain.com/web ”访问plex界面,但是我仍然想摆脱“ / web ”部分。
所以要这样做我试过了:
ProxyPass / http://localhost:32400/web ProxyPassReverse / http://localhost:32400/web
哪一个根本不起作用,那只是给了我的“404 Not Found”。
那么,这可以以我想要的方式解决吗? 如果是这样,我该怎么做。
任何帮助是非常appreaciated。
您可以使用重写规则摆脱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/
你应该检查所有的细节。 特别要注意的是要设置一些基本的authentication来保护你的主机。
这里是改变的解决scheme:
添加DNAT规则,将所有stream量从80redirect到32400。
iptables -t nat -I PREROUTING -p tcp -d XXXX--dport 80 -J DNAT --to-destination XXXX: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