I watched, readed tons of tutorials, tons of videos, let me say THANK YOU VERY MUCH ! You are the only one who shows reverse proxy with more than one service and with thoses services interacting with HTTP requests ! I want to cry man ^^ Again thank you very much for that awesome tutorial. PS : Which tool did you use to make your Diagram, it renders very nice ;)
Such a great video to learn more about not only Docker but also how to manage and setup a reverse proxy using Nginx! The only thing I would like to point out is that you can use "expose" on the docker-compose.yml for all those services except the nginx, as if it was a production environment, you would only want the reverse proxy to be visible to the host (rather than exposing the other ones to your host as well). Using "expose" will not publish the ports to the host machine - they’ll only be accessible to linked services (in this case the reverse proxy). Anyway, a small tip, but I really loved this video and your explanation. Keep the good work! :)
Please cover the follwoing questions : 1. What is reverse proxy 2. Why do we need it 3. How we can setup nginx to handle different ports, ips 4. How we can map frontend and backend api with nginx 4. Security aspect 5. Alternative of nginx 6. How is it different than k8s ingress
Thanks. I'm trying to dockerize Nuxt-Django-MariaDB-Nginx. I have read a lot of information and I have saw meny video tutorials. In this journey your tutorial has unraveled many things for me.
It's really really awesome that you structured these large multi container projects using the same templates as a single app (weather app). I don't know if the word is innovative but it's really helpful and easy to grasp.
Thank you so much for this great video and well explanation. I learned a lot from your video. For you guys who Fork/Clone this nice project in early 2022, it seems like using node:latest in the weather_report dockerfile will not work because an issue of Node 17+ and OpenSSH (ref to a question in Stackoverflow). I fixed node version as 16.14.0 then it works great.
Hello guys, great videos Wes, can anyone help me with a problem i have? I need to be able to see the changes when I write new code for example on vue, if I change the the html and refresh the localhost, nothing is showing, i need to rebuild all the containers! How can i solve this? Thanks
Nice job mate, keep it going. Maybe one small improvement detail, you could have maybe just touched a bit on how the requests are proxied by Nginx to the different containers. All in all, great vid. :D
I need a organized way of hosting my vps and home server so thanks for the info. I think it's better to limit the initial steps when you make a tutorial. If you start with just the docker proxy and then add an application at a time it would be easier to process the information. 😉
These ops videos are so well done. Nginx has been such a black box to me and this has changed that. Any chance you can compare docker/containerization with infrastructure-as-code? It'd be nice to see how these strategies complement/compete with each other. Great work as usual!
I used nginx outside of docker ( installed in my host ) to make sure site is available even when I'm restarting docker etc.. Do you think it's a good approach ? I blocked published ports of the apps inside docker in firewall.
For some reason it is having trouble resolving my container... I get " [error] 31#31: *2 no resolver defined to resolve *container name* " when sending a request to my nginx container
Hello man, Thank you so mcuh for your video, it already helped me so much. Your tutorial works perfectly how it is. However, when I try to use proxy_pass with a REGEX to match a URL, i get the "no resolver defined to resolve" error and a 502 error. Can you please give me a hint ? Thanks in advance.
im trying to do the same with apache, but for some reason i only get the default "It works" page, locally it works find. but not when I build and upload it to aws with docker compose
I have a rest api and I have a script I found online that makes it so that the front end waits for the backend in docker compose but once the backend runs the front end times out or gives me a code 1 error. I have extended the timeout time but it now gives a code 0 error. How do I solve this?
Hi, how can I enhance the nginx-proxy response times, multi-threading, and throughput? which parameters should I modify in host config or nginx.conf file to do achieve that? Thanks in advance.
I like your channel and the explanations, if you can please consider these four aspects WHAT, WHY, WHEN and HOW. I specifically wants to learn .net core + docker on Linux + K8s.
Great video! I have a follow-up question: What's the optimal approach to achieve the same outcome in a Kubernetes environment, specifically on EKS? Suppose I want to expose only the front-end application through Ingress without exposing the back-end application. What would be the recommended method for accomplishing this?
Thanks for the great demo, it's helped me a lot with what I am doing right now. I have a question though, why is your axios sending the request to "localhost" and not to "reverse-proxy" that is defined in your docker-compose. By sending to localhost, is it not sending to the nginx that is installed in the Vujs container itself and not the one acting as the reverve proxy? Thanks
not a bad explanation here. one thing 'off' i notice. there's no reason to map the container ports to your host ports unless your planning to actually use the host ports
Hi so informative video, there is nginx container on the top of the tree serving subcontainers and also there is second nginx container serving specifically Vue app if that's right can I serve Vue app without second nginx config only through the top most nginx container or the second nginx image is required for serving Vue container ?
Is there any possible way to make it work when the python flask app is running on 127.0.0.1:5001 instead of 0.0.0.0:5000? I think it is impossible on Windows docker... (I tried using nginx to reverse proxy... does it work for you??)
Thank you for this great tutorial! One question though, why did you still open the ports for weather-report, temperature-service and precip-service when it is being handled by reverse-proxy?
Thanks for the to the point explanation !! There's one thing I do not understand, our Vue app can communicate to the backend servers alone right? what is the use of reverse proxy? generally in a web application we have a client and then we have a server, our client is hosted somewhere so is our server, we expose APIs from server , and we call them from the client giving proper hostname and API path making a complete URL. So, our client app is hosted and when a user clicks a button, our client app (Vue app here) will call the services. Where the proxy comes in place here and why do we need it? I am trying to compare a simple web app architecture with these dockerized version using nginx.
So I have a server where I have multiple services running as different containers, I have the ports all mapped to a port on the server, and then the microservices referenced by a different location for each in my Nginx conf file, however, only the first container is reachable by the location. the rest seem to fail to load some files such as /usr/share/nginx/html/Content/Fonts/fonts.css or venders.js in the same location... I don't know if these were set up by the container or what but I'm not sure how to get them to cooperate with the reverse proxy.
not really sure what I'm doing wrong. The only thing I'm doing differently than you is that my stuff is hosted on an external box instead of on the same machine.
What you talking about. He completly went off topic just had to show its 3 docker containers running and which ports they were on, Instead went through a docker compose file etc. Docker ps would have been enough
I am trying to send a curl request to a route inside my own container. It's of oauth. If I do this I get a request denied error. I tried the container itself as the url, the docker IP (which I think using the container name basically does anyways) I tried localhost, the url I set in nginx. Nothing works
Hi Andrew, are you using curl from a shell outside of your container? If you are on the host where Docker is running, you will need to expose the port on the container running your server
New to Docker - trying to understand the image concept. I'm on Nginx in Docker Hub (hub.docker.com/_/nginx/?spm=5176.doc53764.2.3.gm0FWx) but theres no reference to nginx:1.17.10 that your reverse_proxy container utilises. Where can I find the most up-to-date nginx image? Or can this be substituted for nginx:stable ? Many thanks in advance
@@WesDoyle Is that mandatory, when u have reverse proxy or not? How the frontend app can know the microservices endpoints, if there is no nginx for the frontend....
Hi , great explanation , I m struggling to get (react + laravel) webpack dev server in docker for development environment in my php app , if u know about that , could make video on that
Hi Hemanshu Khodiyar, I've been meaning to get around to building a Laravel project for a long time now. I'll put it in the queue of ideas for future videos! Thanks for the message. 😀
Error response from daemon: error while creating mount source path '/run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-22.04/e6c980e4712950952a6941bed43e00b3d45f57d25fa4b8c5efadedc2310bf202': mkdir /run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-22.04/e6c980e4712950952a6941bed43e00b3d45f57d25fa4b8c5efadedc2310bf202: file exists please help Wes
I watched, readed tons of tutorials, tons of videos, let me say THANK YOU VERY MUCH ! You are the only one who shows reverse proxy with more than one service and with thoses services interacting with HTTP requests ! I want to cry man ^^ Again thank you very much for that awesome tutorial.
PS : Which tool did you use to make your Diagram, it renders very nice ;)
This is one such simple and an excellent video to learn. This helped me a lot. You are a life savior. Thank you
Such a great video to learn more about not only Docker but also how to manage and setup a reverse proxy using Nginx! The only thing I would like to point out is that you can use "expose" on the docker-compose.yml for all those services except the nginx, as if it was a production environment, you would only want the reverse proxy to be visible to the host (rather than exposing the other ones to your host as well). Using "expose" will not publish the ports to the host machine - they’ll only be accessible to linked services (in this case the reverse proxy). Anyway, a small tip, but I really loved this video and your explanation. Keep the good work! :)
Please cover the follwoing questions :
1. What is reverse proxy
2. Why do we need it
3. How we can setup nginx to handle different ports, ips
4. How we can map frontend and backend api with nginx
4. Security aspect
5. Alternative of nginx
6. How is it different than k8s ingress
I'd also add an additional question about how you can map multiple instances of the same backend app with nginx to load balance them.
Good questions, will answer anything missing in a followup video. Thank you
Good question, will answer in a followup video! Thanks for watching
Hello, newcomer here. Has the questions been answered ?
@@crimsonderiv no, not all.
One of the best videos for NGINX understanding. Explained in very very simple language. Thank you
Wes, you are exceptional at explaining things, compared to the dozens of blog posts I found. Thank you very much!
Thanks. I'm trying to dockerize Nuxt-Django-MariaDB-Nginx. I have read a lot of information and I have saw meny video tutorials. In this journey your tutorial has unraveled many things for me.
You just helped me solve a problem I've been stuck on for almost a month, thank you so much!
nice! glad to hear it
finally someone who pronounces it right
:)
This video covers so much and so clearly. Thanks for posting it!
It's really really awesome that you structured these large multi container projects using the same templates as a single app (weather app). I don't know if the word is innovative but it's really helpful and easy to grasp.
Really great tutorial. Couldn't find anything else like this online. Thanks a lot!
Thank you for explaining clearly!! Loved❤
Thank you so much for this great video and well explanation. I learned a lot from your video.
For you guys who Fork/Clone this nice project in early 2022, it seems like using node:latest in the weather_report dockerfile will not work because an issue of Node 17+ and OpenSSH (ref to a question in Stackoverflow). I fixed node version as 16.14.0 then it works great.
thanks for the information!
Hi, do you have recommendations on how setting up SSL using your approach?
great tutorial man, I keep coming back to this again and again when I am lost. nicely explained. Keep up the great work
The portions about "Volumes" really helped me understand how it worked. Thank you and great detailed video.
Sub'd and liked!
Genial!!!! Esto es lo que realmente estaba buscando, justo esto!!!! Gracias, tienes una suscriptora de habla hispana!!!
gracias
This helped me a lot. Super clear and to the point. Just what I needed. Thanks Wes !
Thank you very much Wes, great example!
This is absolutely great Wes! Thanks for sharing
Glad you enjoyed it!
You got a really soothing voice dude
I love the content of your videos, thank you!
I'm using jwilder nginx reverse proxy Project to Java application.... Works fine
Wes, thank you very much for this clear example. It really helped me and I got a workin' local docker compose file. cheers!
Great to hear!
Very helpful! Thoroughly explained and very clear
Hello guys, great videos Wes, can anyone help me with a problem i have? I need to be able to see the changes when I write new code for example on vue, if I change the the html and refresh the localhost, nothing is showing, i need to rebuild all the containers! How can i solve this? Thanks
So grateful for this video. Thank you!
Nice job mate, keep it going. Maybe one small improvement detail, you could have maybe just touched a bit on how the requests are proxied by Nginx to the different containers. All in all, great vid. :D
Yes true, like how it works behind the scenes and why do we need it?
Thanks a lot for a very nice example. This is the very video I needed
Loved it. Keep up the good work.
This is absolutely brilliant! Really what I was looking for - thank you so much!
Great content! Ty Sir.
Muchas gracias amigo
Hi Wes, thanks for the tutorial, it helped me a lot!
The best tutorial out there, thank you
that's dope, bro! thanks a lot for the tutorial
best tutorial out there. kudos 👍
well Put!!! Thanks!
I need a organized way of hosting my vps and home server so thanks for the info.
I think it's better to limit the initial steps when you make a tutorial.
If you start with just the docker proxy and then add an application at a time it would be easier to process the information. 😉
Noted! Thanks for the feedback
Excellent, excellent video... thanks a lot
These ops videos are so well done. Nginx has been such a black box to me and this has changed that. Any chance you can compare docker/containerization with infrastructure-as-code? It'd be nice to see how these strategies complement/compete with each other. Great work as usual!
Thanks Natesh Mayuranathan - and great idea. I will put this in the queue of ops videos to record.
Hey man, awesome content right here. Would you mind sharing more about Nginx on Docker for Production build? Thanks in advance!
I used nginx outside of docker ( installed in my host ) to make sure site is available even when I'm restarting docker etc..
Do you think it's a good approach ? I blocked published ports of the apps inside docker in firewall.
Thank you
For some reason it is having trouble resolving my container... I get " [error] 31#31: *2 no resolver defined to resolve *container name* " when sending a request to my nginx container
you pink courser just drive me nuts....
Great explanation and detail. Subscribed!
Man. Absolutely amazing.
Hello man,
Thank you so mcuh for your video, it already helped me so much.
Your tutorial works perfectly how it is. However, when I try to use proxy_pass with a REGEX to match a URL, i get the "no resolver defined to resolve" error and a 502 error. Can you please give me a hint ?
Thanks in advance.
im trying to do the same with apache, but for some reason i only get the default "It works" page, locally it works find. but not when I build and upload it to aws with docker compose
I have a rest api and I have a script I found online that makes it so that the front end waits for the backend in docker compose but once the backend runs the front end times out or gives me a code 1 error.
I have extended the timeout time but it now gives a code 0 error. How do I solve this?
Thank you for the great demo!
Hi, how can I enhance the nginx-proxy response times, multi-threading, and throughput? which parameters should I modify in host config or nginx.conf file to do achieve that? Thanks in advance.
I’ll make a note to cover nginx in depth in a future video!
I like your channel and the explanations, if you can please consider these four aspects WHAT, WHY, WHEN and HOW. I specifically wants to learn .net core + docker on Linux + K8s.
Hi Devender, nice -- K8s is a big topic, but definitely relevant to modern devops. Thanks for watching!
Great video!
I have a follow-up question: What's the optimal approach to achieve the same outcome in a Kubernetes environment, specifically on EKS? Suppose I want to expose only the front-end application through Ingress without exposing the back-end application. What would be the recommended method for accomplishing this?
Great video! Would love more complex production geared version of this video. Thanks
Thanks Ramon! Will see what I can do about making a more in-depth follow up video. 👍
Thanks for the great demo, it's helped me a lot with what I am doing right now.
I have a question though, why is your axios sending the request to "localhost" and not to "reverse-proxy" that is defined in your docker-compose. By sending to localhost, is it not sending to the nginx that is installed in the Vujs container itself and not the one acting as the reverve proxy? Thanks
thank you for this awesome video
what if the microservices have diffrent yml file and the nginx has its own instead of making it just one file
Why did you define "container name" in compose file? If this is set, containers cannot be scaled up ( multiple instances of the same container).
Good point, MRK! If I was going to update this intending to scale those services, I would update to remove container name from the compose file.
why there isnt an EXPOSE port inside the weather_report app's dockerfile ?
Great tutorial 👌
Thank you SO MUCH
Helpful, thanks!
not a bad explanation here. one thing 'off' i notice. there's no reason to map the container ports to your host ports unless your planning to actually use the host ports
So what does the remote address variable need to be set as for X forwarding?
Hi so informative video, there is nginx container on the top of the tree serving subcontainers and also there is second nginx container serving specifically Vue app if that's right can I serve Vue app without second nginx config only through the top most nginx container or the second nginx image is required for serving Vue container ?
Thanks u so much! Your lesson has helped me a lot
Glad to hear that, Joe! Hope you are well.
Is there any possible way to make it work when the python flask app is running on 127.0.0.1:5001 instead of 0.0.0.0:5000? I think it is impossible on Windows docker... (I tried using nginx to reverse proxy... does it work for you??)
Caddy reverse proxy worked for this... not sure why I couldn't make nginx work...
Thank you so much...
How can we scale up the nginx reverse proxy container?
Great video!
What theme and Color scheme are you using for terminal here?
Thank you for this great tutorial! One question though, why did you still open the ports for weather-report, temperature-service and precip-service when it is being handled by reverse-proxy?
hey Harris! great point
If you ever come to South Africa I'd like to buy you your favourite beverage Wes
hope to take you up on that someday 😄
Excellent
Thanks, great video!
Thanks for the to the point explanation !!
There's one thing I do not understand, our Vue app can communicate to the backend servers alone right? what is the use of reverse proxy?
generally in a web application we have a client and then we have a server, our client is hosted somewhere so is our server, we expose APIs from server , and we call them from the client giving proper hostname and API path making a complete URL. So, our client app is hosted and when a user clicks a button, our client app (Vue app here) will call the services.
Where the proxy comes in place here and why do we need it? I am trying to compare a simple web app architecture with these dockerized version using nginx.
Please upload another video using https on nginx using openssl.
So I have a server where I have multiple services running as different containers, I have the ports all mapped to a port on the server, and then the microservices referenced by a different location for each in my Nginx conf file,
however, only the first container is reachable by the location. the rest seem to fail to load some files such as /usr/share/nginx/html/Content/Fonts/fonts.css or venders.js in the same location... I don't know if these were set up by the container or what but I'm not sure how to get them to cooperate with the reverse proxy.
not really sure what I'm doing wrong. The only thing I'm doing differently than you is that my stuff is hosted on an external box instead of on the same machine.
any help from anyone would be appreciated I'm about to tear my hair out on all this
What a great demo touching on so many areas without going down rabbit holes.
What you talking about. He completly went off topic just had to show its 3 docker containers running and which ports they were on, Instead went through a docker compose file etc. Docker ps would have been enough
I am trying to send a curl request to a route inside my own container. It's of oauth. If I do this I get a request denied error. I tried the container itself as the url, the docker IP (which I think using the container name basically does anyways) I tried localhost, the url I set in nginx. Nothing works
Hi Andrew, are you using curl from a shell outside of your container? If you are on the host where Docker is running, you will need to expose the port on the container running your server
New to Docker - trying to understand the image concept. I'm on Nginx in Docker Hub (hub.docker.com/_/nginx/?spm=5176.doc53764.2.3.gm0FWx) but theres no reference to nginx:1.17.10 that your reverse_proxy container utilises. Where can I find the most up-to-date nginx image? Or can this be substituted for nginx:stable ? Many thanks in advance
ff.. why youtube translate title of video to russian ... of IT
when i am want video only on rus lang.. its wrong
iF i wanna on englisl i am take that
What YAML editor are you using in the video?
Also excellent explanation
i pulled your repo and it just doesnt work. i did not change anything. just a git clone and docker compose up. it failed!!!
Hi Chris, what details does the error message provide?
@@WesDoyle I'm going to check it as soon as I get home
hello friend and with apache can you do it the same with dccker?
Hi dextre - yes, you can also run Apache in a container!
Why we need nginx.conf file in the frontend app?
Here we're using an nginx server to serve up the built Vue application!
@@WesDoyle Is that mandatory, when u have reverse proxy or not? How the frontend app can know the microservices endpoints, if there is no nginx for the frontend....
Hi , great explanation , I m struggling to get (react + laravel) webpack dev server in docker for development environment in my php app , if u know about that , could make video on that
Hi Hemanshu Khodiyar, I've been meaning to get around to building a Laravel project for a long time now. I'll put it in the queue of ideas for future videos! Thanks for the message. 😀
What editor are you using there ?
vs code
What theme vscode?
I'm using Night Wolf as a VS Code theme here.
502 error
I prefer Traefik.
A solid choice!
15:54
Error response from daemon: error while creating mount source path '/run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-22.04/e6c980e4712950952a6941bed43e00b3d45f57d25fa4b8c5efadedc2310bf202': mkdir /run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-22.04/e6c980e4712950952a6941bed43e00b3d45f57d25fa4b8c5efadedc2310bf202: file exists
please help Wes