Milestone XProtect Behind NGINX Proxy

Discussion in 'Milestone Systems' started by shimabuku, Mar 25, 2018.

Share This Page

  1. shimabuku

    shimabuku n3wb

    Joined:
    Oct 23, 2017
    Messages:
    6
    Likes Received:
    1
    Has anyone gotten nginx reverse proxy to work with Milestone XProtect? I downloaded the Essentials+ but I'm struggling to get this to work.

    Basically I have xprotect.example.com > Sophos Firewall > NGINX Reverse Proxy 443 > Milestone XProtect port 8081

    The web client displays the html code when browsing to https://xprotect.example.com and the mobile client does not work.

    Below is my server block. Any help would be greatly appreciated. Thanks!

    Code:
      server {
           listen 443 ssl;
    
           root /config/www;
           index index.html index.htm index.php;
    
           server_name xprotect.*;
    
           ssl_certificate /config/keys/letsencrypt/fullchain.pem;
           ssl_certificate_key /config/keys/letsencrypt/privkey.pem;
           ssl_dhparam /config/nginx/dhparams.pem;
           ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
           ssl_prefer_server_ciphers on;
    
           client_max_body_size 0;
    
           location / {
                   proxy_pass http://10.0.106.6:8081;
                   proxy_http_version 1.1;
                   proxy_set_header Upgrade $http_upgrade;
                   proxy_set_header Connection "upgrade";
                   proxy_set_header Host $http_host;
                   proxy_set_header X-Forwarded-Proto http;
                   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                   proxy_set_header X-Forwarded-Port $server_port;
                   proxy_set_header X-Request-Start $msec;
                   proxy_set_header X-Real-IP $remote_addr;
                   proxy_set_header X-Nginx-Proxy true;
                   proxy_redirect off;
           }
    }
     
  2. PancakeBimmer

    PancakeBimmer Young grasshopper

    Joined:
    Jun 9, 2015
    Messages:
    41
    Likes Received:
    6
    I think it uses websocket and that must be made available through nginx as well. I set it up a year ago for testing and couldn't get it to work properly until websocket was also setup