Xibo 1.8.10 client behind reverse proxy media not downloading

I’ve read the other support topics that seemed to be about the same problem but as of right now none made my setup work.

My CMS (1.8.10 on ubuntu 16.04) works behind https://example.org/xibo with this nginx configuration :

location /xibo/ {
            proxy_pass              http://192.168.1.114:80/xibo/;
            proxy_set_header        Host                    $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;
            client_max_body_size 20M;
}

The problem I have now is that for some reason my clients do not receive media from the CMS.
I have tried with a client in the LAN and it works, but the moment the client is outside and has to go through the reverse proxy, nothing shows up.

The display (in the CMS) status goes between xibo%20its%20a%20x and xibo%20fa-cloud, while inside the manager all the files have a xibo%20fa%20download except the clock (that was downloaded so it’s a xibo%20check

I do not have XMR setup, I just don’t know how to make it work in my setup.
Collect interval is at 5 minutes for testing, it is habitually at 1hr as layout are rarely updated.

I have a 1.7.6 working setup, my goal is to upgrade it.

There are no error logs. The nginx server only gives me access logs :

172.16.0.19 - - [24/Oct/2018:11:19:54 -0400] "GET /api/v1/channels.list?access_token=5629dc63e660b111575950ea144aea42e85c3652&count=0&sort=%7B+%22ts%22%3A+-1+%7D&offset=0 HTTP/1.0" 200 1787 "-" "Zapier"
172.16.0.19 - - [24/Oct/2018:11:19:55 -0400] "POST /xibo/xmds.php?v=5&method=registerDisplay HTTP/1.0" 200 2934 "-" "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)"
172.16.0.19 - - [24/Oct/2018:11:19:56 -0400] "POST /xibo/xmds.php?v=5&method=notifyStatus HTTP/1.0" 200 514 "-" "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)"
172.16.0.19 - - [24/Oct/2018:11:19:56 -0400] "POST /xibo/xmds.php?v=5&method=schedule HTTP/1.0" 200 4254 "-" "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)"
172.16.0.19 - - [24/Oct/2018:11:20:02 -0400] "GET /xibo/clock?_=1540394221486 HTTP/1.0" 200 194 "https://example.org/xibo/campaign/view" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
172.16.0.19 - - [24/Oct/2018:11:20:02 -0400] "GET /xibo/login/ping?_=1540394221487 HTTP/1.0" 200 169 "https://example.org/xibo/campaign/view" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"

The CMS, with debugging ON, logs gave me :

701	ee222a9	2018-10-24 10:41	WEB	/fault/view	GET	"Request stats: {
    "default": {
        "select": 7
    },
    "log": {
        "insert": 3
    },
    "length": 0.147169828414917,
    "memoryUsage": 9220608,
    "peakMemoryUsage": 9322392
}."		INFO
702	c2ae352	2018-10-24 10:41	WEB	/library/fontcss	GET	Loading 1. All Objects = 0		DEBUG
703	c2ae352	2018-10-24 10:41	WEB	/library/fontcss	GET	Install Fonts called with options: {"invalidateCache":false}		DEBUG
704	c2ae352	2018-10-24 10:41	WEB	/library/fontcss	GET	CMS font CSS returned from Cache.		DEBUG
705	c2ae352	2018-10-24 10:41	WEB	/library/fontcss	GET	Install Fonts called with options: {"invalidateCache":false}		DEBUG
706	c2ae352	2018-10-24 10:41	WEB	/library/fontcss	GET	CMS font CSS returned from Cache.		DEBUG
707	c2ae352	2018-10-24 10:41	WEB	/library/fontcss	GET	"Request stats: {
    "default": {
        "select": 6
    },
    "log": {
        "insert": 5
    },
    "length": 0.1419830322265625,
    "memoryUsage": 8400176,
    "peakMemoryUsage": 8454088
}."		INFO

The Client has :

(media waiting to be downloaded all at 0%)

It’s normally that the Host header isn’t being passed through correctly.

Did you add that proxy_set_header line at some point in your troubleshooting?

If so, you’ll need to clear the display cache for it to get new URLs to download the media from. To do so, go to the Displays page in the CMS, edit the display and save without making any changes. Then wait for the Player to collect from the CMS and it should download.

I do not understand what you mean by “adding” the proxy_set_header… it is in the current configuration. Should I take it out ?

I’ve tried doing that many time but it just made the display’s status change from the x to the cloud and back to the x. I can’t figure out when one is there over the other and why.

I found this little piece SENDFILE_MODE missing from Settings and after doing SENDFILE_MODE off the files started downloading.
What does this setting do and will it break something else ?