Knowledge Base

Preserving for the future: Shell scripts, AoC, and more

Adding Reverse Proxy for Plex to Apache vhost

Introduction

It is easy to find apache vhost definitions for reverse proxying plex traffic. What this post does is show you how to include the parts needed, to provide a reverse proxy to plex, in an existing vhost. Why would you need this? I don't know. I did, and it was as easy as adding a few bits to represent the web address.

Adding reverse proxy for plex to Apache vhost

So in your vhost, add these lines:

        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
        ProxyRequests Off
        ProxyPass               /web/   http://www.ipa.example.com:32400/web/
        ProxyPassReverse        /web/   http://www.ipa.example.com:32400/web/
        <LocationMatch '^/web\/.*$'>
                RequestHeader set Front-End-Https "On"
                RewriteEngine On
                RewriteCond     %{REQUEST_URI}          !^/web
                RewriteCond     %{HTTP:X-Plex-Device}   ^$
                RewriteCond %{REQUEST_METHOD}   !^(OPTIONS)$
                RewriteRule ^/$ /web/$1 [R,L]
        </LocationMatch>

So the difference in this snippet from a separate vhost definition is that you proxypass only the /web/ location over to your Plex media server.

<VirtualHost 192.168.1.14:180>

    ServerName  example.no-ip.biz:80
    ServerAlias example.no-ip.biz example www www.ipa.example.com
    ServerAdmin bgstack15@gmail.com

    DocumentRoot    /var/www

    Options +Indexes
    IndexOptions IgnoreCase FancyIndexing FoldersFirst NameWidth=* DescriptionWidth=*
    IndexIgnore FOOTER.html repodata favicon.ico favicon.png
    ReadmeName FOOTER.html
    DirectoryIndex index.php index.html index.htm
    ServerSignature Off

    SetEnvIf Request_URI "ignoredfile.html" dontlog
    LogFormat "%V %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combinedvhost
    CustomLog logs/access_log combinedvhost env=!dontlog

    # Useful additions for a mirror server
    AddIcon /icons/rpm.png          .rpm
    AddIcon /icons/deb.png          .deb
    AddIcon /icons/repo.png         .repo
    AddType application/octet-stream .iso

    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    TraceEnable off
    <FilesMatch "\.acl$">
        Deny from All
    </FilesMatch>
    &ltDirectory "/var/www/example">
        AllowOverride None
        Order allow,deny
        Allow from all
        Options Indexes FollowSymLinks
    </Directory>

       # Allows "centos.example.no-ip.biz" redirection to "example.no-ip.biz/centos" behavior
# RewriteEngine On
# RewriteCond %{HTTP_HOST} ^([^.]*)\.example\.no-ip\.biz$
# RewriteRule /(.*) http://example.no-ip.biz/%1/$1 [R,L]

    # reference: welcome.conf, reverseproxyforplex.conf
    # reference: http://matt.coneybeare.me/how-to-map-plex-media-server-to-your-home-domain/
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyRequests Off
    ProxyPass       /web/   http://www.ipa.example.com:32400/web/
    ProxyPassReverse    /web/   http://www.ipa.example.com:32400/web/
    <LocationMatch '^/web\/.*$'>
        RequestHeader set Front-End-Https "On"
            RewriteEngine On
        RewriteCond %{REQUEST_URI}      !^/web
        RewriteCond %{HTTP:X-Plex-Device}   ^$
        RewriteCond %{REQUEST_METHOD}   !^(OPTIONS)$    
        RewriteRule ^/$ /web/$1 [R,L]
    </LocationMatch>

</VirtualHost>

References

Weblinks

  1. http://matt.coneybeare.me/how-to-map-plex-media-server-to-your-home-domain/

Comments