ReverseProxy 无法在 OSX El Capitan 上运行

ReverseProxy 无法在 OSX El Capitan 上运行

我正在尝试通过更干净的 URL 访问我的 plex web ui。目前,您可以通过以下网址访问它: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 [email protected]
        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

这里有几件事你需要注意:

  1. 确保您使用的是正确的配置文件。当我在 El Capitan 机器上安装 apache 2.4 时,主配置实际上指向不同的目录/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>
    

答案2

因此,您实际上正在尝试访问Plex 媒体服务器使用自定义 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/

相关内容