I was having issues getting Apache working with Plex, OwnCloud, and SyncThing at the same time on a new server. I wanted to have a reverse proxy set up, so instead of
http://server.com:32400/web/index.html http://server.com:8384/syncthing/ http://server.com/owncloud
I could have
http://server.com/ http://server.com/syncthing http://server.com/owncloud
Apache’s reverse proxy functionality caters to this need.
Each app gets its own ProxyPass, telling Apache what to do with incoming requests.
SyncThing didn’t like operating without a trailing slash in the URL, so a rewrite rule was created to do this for the user.
OwnCloud, since it doesn’t require operating on a separate port, simply goes around the proxy.
Everything else falls into the catchall, which redirects the user to Plex.
#redirect everything to SSL <VirtualHost *:80> RewriteEngine On RewriteCond %{HTTPS} off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} </VirtualHost> <VirtualHost *:443> ServerName server.com #SSL configuration SSLEngine on SSLCertificateFile /etc/ssl/certs/server.crt SSLCertificateKeyFile /etc/ssl/private/server.key SSLCertificateChainFile /etc/ssl/certs/intermediate.crt #begin the proxying ProxyRequests Off ProxyPreserveHost On #let owncloud pass straight through ProxyPass /owncloud ! #syncthing doesn't work without a trailing slash in browser URL RewriteRule ^/syncthing$ /syncthing/ [R] ProxyPass /syncthing/ http://127.0.0.1:8384/ ProxyPassReverse /syncthing/ http://127.0.0.1:8384/ #default go to plex 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] </VirtualHost>