The below vhost assumes you’re using letsencrypt, just replace domain.fqdn with your hostname and PLEX-IP-HOST with the IP/hostname of your plex server. This is useful for connections that block odd ports like 32400 or only allow HTTP/HTTPS.
<VirtualHost *:80>
ServerName plex.domain.fqdn
Redirect / https://plex.domain.fqdn/
ErrorLog ${APACHE_LOG_DIR}/plex_error.log
CustomLog ${APACHE_LOG_DIR}/plex.log combined
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
<VirtualHost *:443>
ServerName plex.domain.fqdn
ProxyRequests Off
ProxyPreserveHost On
SSLProxyEngine On
SetEnv newrelic_appname "http-plex"
php_value newrelic.appname "http-plex"
ErrorLog ${APACHE_LOG_DIR}/plex_error.log
CustomLog ${APACHE_LOG_DIR}/plex.log combined
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/plex.domain.fqdn/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/plex.domain.fqdn/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/plex.domain.fqdn/fullchain.pem
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://PLEX-IP-HOST:32400/
ProxyPassReverse / http://PLEX-IP-HOST:32400/
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>