How to run single nginx and multiple Laravel instances in the App Platform

We use Docker Compose for our Laravel application development. The two main Docker containers in our Compose configuration are:

  • custom nginx Docker container with nginx micro-caching and request throttling - we would like to run a single instance of it

  • custom PHP Docker Container for Laravel itself; we would like to scale it horizontally; nginx is to round-robin requests to multiple Laravel containers (or connect to a single connection point managed by DigitalOcean App Platform).

We are considering App Platform for deployment.

Is this setup possible with the App Platform?

We cannot eliminate nginx because of its role in micro-caching and request throttling; we would like Laravel not to do it because nginx is much more efficient and less resource greedy at these tasks.

Submit an answer

This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Want to learn more? Join the DigitalOcean Community!

Join our DigitalOcean community of over a million developers for free! Get help and share knowledge in Q&A, subscribe to topics of interest, and get courses and tools that will help you grow as a developer and scale your project or business.

@ReWild 👋

This setup is possible on the App Platform! You’re describing 2 service components; 1 for the nginx service, and another for the laravel service — where each service can be scaled independently.

Your nginx configuration can reference your laravel service on the application internal network using a hostname matching your component name. So if your component name is laravel, then you can reference http://laravel from your nginx config in order to route to it internally as desired.

It’s worth noting that the App Platform does have an ingress gateway built-in (via Istio) that load-balances incoming traffic across all instances of your services, so it may not be necessary to do this yourself unless you want more control over other features that aren’t supported yet (like request throttling that you mentioned).