What is the purpose of NGINX in the redash architecture?

Issue Summary

We are attempting to run redash using ECS. The redash deployment/architecture has many components (the database, redis, redash server, NGINX, scheduler, etc.) and we’ve broken them up into appropriate independent services. For example, we’re using RDS to provide the database and we’ve separated redis into its own dedicated service. The redash server itself is a second service, as are the scheduler and workers. This allows each component to fail/restart and scale appropriately.

In the course of working on this, we inadvertently misconfigured NGINX. We were not routing any traffic to NGINX at all. What we discovered is that redash seems to work perfectly fine without it. We’ve tested this on our workstations and in AWS. If we access localhost:5000 (redash) from our web browser or localhost:80 (NGINX) the behavior is exactly the same. We get a working redash web app, with or without NGINX

We looked at the redash Dockerfile for the NGINX component and it seems that NGINX is used as a proxy to route traffic through directly to the redash server. We can’t figure out why this is needed.

Can you please explain the purpose of NGINX in the redash architecture? We’ve not been able to find anything about this topic in the documentation or user forums. It seems not to be needed at all and we’d just as soon not run it, if it’s not required.

Technical details:

  • Redash Version: 8
  • Browser/OS: chrome/firefox
  • How did you install Redash: We’re using ECS, with an RDS database and each redash “server” component as an independent ECS Service. i.e. we have a redis ECS Service and a scheduler ECS Service, etc.

@arikfr what’s the best way to get in touch with Redash developers? As you can see, we’ve tried the forums but so far, no luck …

Cool setup!

I assume NGINX is used because it performs better under load than bare gunicorn and is easily configured with HTTPS.