Created
June 25, 2018 18:18
-
-
Save Fma965/81cbecae960f9c7109a88a5ddb8fb2a7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Upstream to Plex | |
upstream plex_backend { | |
server 192.168.1.2:32400; | |
keepalive 32; | |
} | |
server { | |
listen 80; | |
#Enabling http2 can cause some issues with some devices, see #29 - Disable it if you experience issues | |
listen 443 ssl http2; #http2 can provide a substantial improvement for streaming: https://blog.cloudflare.com/introducing-http2/ | |
listen [::]:443 ssl http2; | |
server_name NOPE; | |
send_timeout 100m; #Some players don't reopen a socket and playback stops totally instead of resuming after an extended pause (e.g. Chrome) | |
#Faster resolving, improves stapling time. Timeout and nameservers may need to be adjusted for your location Google's have been used here. | |
resolver 8.8.4.4 8.8.8.8 valid=300s; | |
resolver_timeout 10s; | |
#Will ensure https is always used by supported browsers which prevents any server-side http > https redirects, as the browser will internally correct any request to https. | |
#Recommended to submit to your domain to https://hstspreload.org as well. | |
#!WARNING! Only enable this if you intend to only serve Plex over https, until this rule expires in your browser it WONT BE POSSIBLE to access Plex via http, remove 'includeSubDomains;' if you only want it to effect your Plex (sub-)domain. | |
#This is disabled by default as it could cause issues with some playback devices it's advisable to test it with a small max-age and only enable if you don't encounter issues. (Haven't encountered any yet) | |
#add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always; | |
#Plex has A LOT of javascript, xml and html. This helps a lot, but if it causes playback issues with devices turn it off. (Haven't encountered any yet) | |
gzip on; | |
gzip_vary on; | |
gzip_min_length 1000; | |
gzip_proxied any; | |
gzip_types text/plain text/css text/xml application/xml text/javascript application/x-javascript image/svg+xml; | |
gzip_disable "MSIE [1-6]\."; | |
#Nginx default client_max_body_size is 1MB, which breaks Camera Upload feature from the phones. | |
#Increasing the limit fixes the issue. Anyhow, if 4K videos are expected to be uploaded, the size might need to be increased even more | |
client_max_body_size 100M; | |
#Forward real ip and host to Plex | |
proxy_set_header Host $host; | |
proxy_set_header X-Real-IP $remote_addr; | |
#When using ngx_http_realip_module change $proxy_add_x_forwarded_for to '$http_x_forwarded_for,$realip_remote_addr' | |
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | |
proxy_set_header X-Forwarded-Proto $scheme; | |
proxy_hide_header X-Frame-Options; | |
#Websockets | |
proxy_http_version 1.1; | |
proxy_set_header Upgrade $http_upgrade; | |
proxy_set_header Connection "upgrade"; | |
#Disables compression between Plex and Nginx, required if using sub_filter below. | |
#May also improve loading time by a very marginal amount, as nginx will compress anyway. | |
#proxy_set_header Accept-Encoding ""; | |
#Buffering off send to the client as soon as the data is received from Plex. | |
proxy_redirect off; | |
proxy_buffering off; | |
location / { | |
proxy_pass http://plex_backend; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment