Endpoint == instance of phoenix webserver. Changing things in the endpoint gives you WAF-like control and you can do some early footwork here and store useful data in conn[:private] for you to use later in the modules called in your router
You can have multiple routers. I just built a thing where foo.com uses one router for the main site and *.foo.com is something else.