Назад | Перейти на главную страницу

ReverseProxy не работает на OSX El Capitan

Я пытаюсь получить доступ к своему веб-интерфейсу plex через более чистый URL-адрес. В настоящее время вы можете получить к нему доступ по адресу http://marvin.boldlygoingnowhere.org:32400/web/index.html. Я хочу, чтобы это было в http://marvin.boldlygoingnowhere.org/plex

Вот что у меня есть,

marvin: ~ Marvin $ httpd -v Версия сервера:

 Apache/2.4.16 (Unix)
Server built:   Aug 22 2015 16:51:57
Server's Module Magic Number: 20120211:47
Server loaded:  APR 1.4.8, APR-UTIL 1.5.2
Compiled using: APR 1.4.8, APR-UTIL 1.5.2
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_FLOCK_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/usr"
 -D SUEXEC_BIN="/usr/bin/suexec"
 -D DEFAULT_PIDLOG="/private/var/run/httpd.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="/private/etc/apache2/mime.types"
 -D SERVER_CONFIG_FILE="/private/etc/apache2/httpd.conf"

В

/private/etc/apache2/extra/httpd-vhosts.conf

Listen 80

    # Listen for virtual host requests on all IP addresses
    <VirtualHost *:80>
        ServerName marvin.boldlygoingnowhere.org
        ErrorLog "/private/var/log/apache2/marvin-error_log"
        CustomLog "/private/var/log/apache2/marvin-access_log" common
        ServerAdmin admin@futurehax.org
        ProxyRequests Off

        <Proxy http://marvin.boldlygoingnowhere.org/plex>

          Order deny,allow
          Allow from all

          ProxyPreserveHost off
          ProxyPass http://localhost:32400
          ProxyPassReverse http://localhost:32400

        </Proxy>
    </VirtualHost>

/private/etc/apache2/httpd.conf

Без комментариев

Include /private/etc/apache2/extra/httpd-vhosts.conf

и

LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so

Я ожидаю, что при этой текущей настройке я смогу достичь http://marvin.boldlygoingnowhere.org/plex/web, вместо этого я получаю 404.

Я инженер-программист для мобильных устройств, но это одно из моих первых приключений в сети, и оно меня довольно сильно побили.

Вот пара вещей, на которые вам нужно обратить внимание:

  1. Убедитесь, что вы используете правильный файл конфигурации. Когда я установил apache 2.4 на свой компьютер с El Capitan, основные конфигурации фактически указывают на другой каталог. /usr/local/etc/apache2/2.4/httpd.conf:

    $ httpd -V
    Server version: Apache/2.4.17 (Unix)
    Server built:   Nov 13 2015 19:31:42
    Server's Module Magic Number: 20120211:51
    Server loaded:  APR 1.5.2, APR-UTIL 1.5.4
    Compiled using: APR 1.5.2, APR-UTIL 1.5.4
    Architecture:   64-bit
    Server MPM:     prefork
      threaded:     no
        forked:     yes (variable process count)
    Server compiled with....
     -D APR_HAS_SENDFILE
     -D APR_HAS_MMAP
     -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
     -D APR_USE_SYSVSEM_SERIALIZE
     -D APR_USE_PTHREAD_SERIALIZE
     -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
     -D APR_HAS_OTHER_CHILD
     -D AP_HAVE_RELIABLE_PIPED_LOGS
     -D DYNAMIC_MODULE_LIMIT=256
     -D HTTPD_ROOT="/usr/local/Cellar/httpd24/2.4.17"
     -D SUEXEC_BIN="/usr/local/Cellar/httpd24/2.4.17/bin/suexec"
     -D DEFAULT_PIDLOG="/usr/local/var/run/apache2/httpd.pid"
     -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
     -D DEFAULT_ERRORLOG="logs/error_log"
     -D AP_TYPES_CONFIG_FILE="/usr/local/etc/apache2/2.4/mime.types"
     -D SERVER_CONFIG_FILE="/usr/local/etc/apache2/2.4/httpd.conf"
    
  2. Для обратного прокси вы можете просто использовать что-то вроде этого:

    <VirtualHost *:80>
      ServerName marvin.boldlygoingnowhere.org
      DocumentRoot /var/www/html
      ProxyPreserveHost On
      ProxyPass /plex http://127.0.0.1:32400
      ProxyPassReverse /plex http://127.0.0.1:32400
    
    </VirtualHost>
    

Итак, вы действительно пытаетесь получить доступ Plex Media Server с настраиваемым URL-адресом. Как видите, это не просто сайт, а медиа-сервер. В любом случае, вот упрощенный фрагмент конфигурации, который должен работать, от Вот:

<VirtualHost *:80>
    ServerName marvin.boldlygoingnowhere.org
<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

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]

Убедитесь, что все необходимые модули apache установлены, и проверьте журнал ошибок apache для устранения неполадок.

Похоже, что Plex предлагает лучшее решение. Все, что Вам нужно сделать, это зарегистрироваться здесь: https://plex.tv/users/sign_in. И вы можете настроить у владельцев регистрации домена, чтобы он указывал marvin.boldlygoingnowhere.org на https://app.plex.tv/web/app.

Обновить: Из дальнейшего расследования мне кажется, что ваша запись vhost игнорируется apache. Также, когда вы пытаетесь получить доступ http://marvin.boldlygoingnowhere.org, он попадает в корень документа Apache. Что вы можете сделать, так это попробовать с альтернативным именем сервера, например plex.yourdomain.com, или настроить свой виртуальный хост в каталоге пользователя и посмотреть, что произойдет. Вам может помочь начальная часть статьи: http://coolestguidesontheplanet.com/get-apache-mysql-php-and-phpmyadmin-working-on-osx-10-11-el-capitan/