Repository: orobardet/dsm-reverse-proxy-websocket Branch: master Commit: 0988e0839c83 Files: 3 Total size: 4.9 KB Directory structure: gitextract_wdftdiec/ ├── Portal.mustache ├── Portal.mustache.dist └── README.md ================================================ FILE CONTENTS ================================================ ================================================ FILE: Portal.mustache ================================================ {{#ReverseProxy}} server { listen {{port}}{{#https}} ssl{{/https}}{{#https.http2}} http2{{/https.http2}}{{#reuseport}} reuseport{{/reuseport}}{{^fqdn}} default_server{{/fqdn}}; listen [::]:{{port}}{{#https}} ssl{{/https}}{{#https.http2}} http2{{/https.http2}}{{#reuseport}} reuseport{{/reuseport}}{{^fqdn}} default_server{{/fqdn}}; {{#resolver}} resolver {{resolver}}; set $backend "{{backend}}"; {{/resolver}} server_name {{#fqdn}}{{fqdn}}{{/fqdn}}{{^fqdn}}_{{/fqdn}}; {{#https.certificate}} ssl_certificate {{https.certificate}}; {{/https.certificate}} {{#https.key}} ssl_certificate_key {{https.key}}; {{/https.key}} {{#https.hsts}} {{> /usr/syno/share/nginx/HSTS}} {{/https.hsts}} location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_intercept_errors on; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; {{#resolver}} proxy_pass $backend; {{/resolver}} {{^resolver}} proxy_pass {{backend}}; {{/resolver}} } {{#letsencrypt}} {{> /usr/syno/share/nginx/LetsEncrypt}} {{/letsencrypt}} } {{/ReverseProxy}} ================================================ FILE: Portal.mustache.dist ================================================ {{#ReverseProxy}} server { listen {{port}}{{#https}} ssl{{/https}}{{#https.http2}} http2{{/https.http2}}{{#reuseport}} reuseport{{/reuseport}}{{^fqdn}} d efault_server{{/fqdn}}; listen [::]:{{port}}{{#https}} ssl{{/https}}{{#https.http2}} http2{{/https.http2}}{{#reuseport}} reuseport{{/reuseport}}{{^fqd n}} default_server{{/fqdn}}; {{#resolver}} resolver {{resolver}}; set $backend "{{backend}}"; {{/resolver}} server_name {{#fqdn}}{{fqdn}}{{/fqdn}}{{^fqdn}}_{{/fqdn}}; {{#https.certificate}} ssl_certificate {{https.certificate}}; {{/https.certificate}} {{#https.key}} ssl_certificate_key {{https.key}}; {{/https.key}} {{#https.hsts}} {{> /usr/syno/share/nginx/HSTS}} {{/https.hsts}} location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_intercept_errors on; proxy_http_version 1.1; {{#resolver}} proxy_pass $backend; {{/resolver}} {{^resolver}} proxy_pass {{backend}}; {{/resolver}} } {{#letsencrypt}} {{> /usr/syno/share/nginx/LetsEncrypt}} {{/letsencrypt}} } {{/ReverseProxy}} ================================================ FILE: README.md ================================================ # dsm-reverse-proxy-websocket Configuration fix for Synology DSM 6 reverse proxy to handle websocket **Starting from DSM 6.2.1, this modification is no longer required, as Application Portail has an option to handle websocket. It's even not recommended to modify your `Portal.mustache` file, as it will cause error when adding or edition reverse proxy entries in Application Portal.** In DSM 6.2.1+, when editing a reverse proxy entry in Application Portal, go to "custom headers" tab and click the arrow on the "Create" button, then "Websocket". This will add the required headers for websocket to this reverse proxy. **BACKUP YOUR `portal.mustache` BEFORE MODIFYING IT!** You need to edit the file `/usr/syno/share/nginx/Portal.mustache` to add the followings in the `location` section: ``` proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_read_timeout 86400; ``` Then restart the httpd with: ``` sudo synoservicecfg --restart nginx ``` *This will restart ALL http service running, not only reverse proxy, as a single instance of NGinX runs everything.* A modified `Portal.mustache` is provided in this repo (warning: based on DSM 6.1.6-15266). # Known DSM upgrade impacts on the `Portal.mustache` file > In **bold** versions overwriting the `Portal.mustache` - **6.2.1-23824** : overwrites the `Portal.mustache` with a completly new template. **Starting from this version, hacking files are not required anymore as Application Portail reverse proxy feature now has an option to handle websocker.** - **6.2-23739** : overwrites the `Portal.mustache` - **6.1.7-15284** : overwrites the `Portal.mustache` - 6.1.6-15266-1 : leaves the `Portal.mustache` file unchange - **6.1.6-15266** : overwrites the `Portal.mustache` - 6.1.3-15152-1 : leaves the `Portal.mustache` file unchange - **6.1.3-15152** : overwrites the `Portal.mustache` - **6.1.2-15132** : overwrites the `Portal.mustache` - 6.1.1-15101-4 : leaves the `Portal.mustache` file unchange - **6.1.1-15101** : overwrites the `Portal.mustache`