Apache proxypass перенаправляет поддомен на порт и путь

Apache proxypass перенаправляет поддомен на порт и путь

Хорошо, я не был уверен, как сформулировать заголовок, но попробую объяснить свою ситуацию.

У меня есть домашний сервер под управлением Debian, на котором, помимо прочего, запущен «Plex Media Server».

Я получаю доступ к своему серверу удаленно, используя поддомен домена, которым я владею, назовем его "мойдомен.com". Я получаю доступ к своему серверу на поддомене "home.mydomain.com" (который в данный момент просто отображает некоторый базовый HTML) и я получаю доступ к "веб-интерфейсу Plex" на "home.mydomain.com:32400/web".

Я хочу перенаправить поддомен "plex.mydomain.com" к "home.mydomain.com:32400/web" для более легкого доступа к "интерфейсу плекса".


Мне удалось пройти половину пути, но я не уверен, как действовать дальше и возможно ли это вообще.

Вот мои виртуальные хосты на данный момент:

<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

Связанный контент