Тёмный
No video :(

Docker and Nginx Reverse Proxy 

Wes Doyle
Подписаться 40 тыс.
Просмотров 114 тыс.
50% 1

#docker #nginx #reverseproxy
In this video, we'll look at a very basic reverse proxy with nginx and docker-compose. Our nginx reverse proxy will route requests to two Python Flask APIs and a container serving up a Vue app.
Check out my flagship Udemy course - 12-hour full-stack app build with automation tests, Vue.js, .NET Core, and SQL * For a limited time, use promo code STACK20 *
Like videos about web development, DevOps, and machine learning? Please support me on Patreon!
▬▬▬▬▬▬ 🎒 Udemy Course 🎒 ▬▬▬▬▬▬
Check out my flagship Udemy course - 12-hour full-stack app build with automation tests, Vue.js, .NET Core, and SQL * For a limited time, use promo code STACK20 *
►►► bit.ly/wesd-udemy
▬▬▬▬▬▬ 👋 Get in Touch! 👋 ▬▬▬▬▬▬
Patreon ► bit.ly/pd-patreon
Facebook Group ► bit.ly/productive-dev-fb
My Twitter ► bit.ly/wesd-twitter
My LinkedIn ► bit.ly/wesd-linkedin
▬▬▬▬▬▬ 🕘 T I M E S T A M P S 🕘 ▬▬▬▬▬▬
0:00 - Intro and Background
0:59 - Project Layout
2:16 - Docker Compose File
7:10 - nginx.conf File
12:30 - Temperature Service Dockerfile
14:28 - Temperature Service Flask Application
15:50 - Precip Service Dockerfile
16:05 - Precip Service Flask Application
18:06 - Weather Report Vue App
23:15 - Vue Dockerfile
25:00 - Vue nginx.conf
27:15 - Using Docker Compose to Launch
28:30 - Bugfix
30:40 - Outro
▬▬▬▬▬▬ 📚 TOPICS OVERVIEW 📚 ▬▬▬▬▬▬
☁️ Setting up NGINX in Docker as a reverse proxy ☁️
► How to create, configure, and launch a reverse proxy with nginx + Docker
► How to route requests to different backend services
► Using docker compose
► Setting up nginx.conf for reverse proxy
▬▬▬▬▬▬ 🔗 LINKS ▬▬▬▬▬▬
► GitHub repo for this project: github.com/productive-dev/min...

Опубликовано:

 

31 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 133   
@NoirExtra
@NoirExtra 3 года назад
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 ;)
@realist.network
@realist.network 2 года назад
Wes, you are exceptional at explaining things, compared to the dozens of blog posts I found. Thank you very much!
@hopeitworks2085
@hopeitworks2085 4 года назад
This is one such simple and an excellent video to learn. This helped me a lot. You are a life savior. Thank you
@wamanyewle1103
@wamanyewle1103 3 года назад
One of the best videos for NGINX understanding. Explained in very very simple language. Thank you
@roeifinkelstein118
@roeifinkelstein118 2 года назад
This helped me a lot. Super clear and to the point. Just what I needed. Thanks Wes !
@christopherrodriguezconde7693
@christopherrodriguezconde7693 3 года назад
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! :)
@arsalanahmad1832
@arsalanahmad1832 3 года назад
great tutorial man, I keep coming back to this again and again when I am lost. nicely explained. Keep up the great work
@jorgepvenegas
@jorgepvenegas 2 года назад
This video covers so much and so clearly. Thanks for posting it!
@alexpaden5159
@alexpaden5159 2 года назад
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.
@linusmeier9515
@linusmeier9515 2 года назад
This is absolutely brilliant! Really what I was looking for - thank you so much!
@shanebenlolo4866
@shanebenlolo4866 3 года назад
You just helped me solve a problem I've been stuck on for almost a month, thank you so much!
@WesDoyle
@WesDoyle 3 года назад
nice! glad to hear it
@galvanino
@galvanino 3 года назад
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.
@Grimreap191
@Grimreap191 2 года назад
Really great tutorial. Couldn't find anything else like this online. Thanks a lot!
@dezwilliamz
@dezwilliamz Год назад
The portions about "Volumes" really helped me understand how it worked. Thank you and great detailed video. Sub'd and liked!
@CodingEntrepreneurs
@CodingEntrepreneurs 3 года назад
This is absolutely great Wes! Thanks for sharing
@WesDoyle
@WesDoyle 3 года назад
Glad you enjoyed it!
@djmonteur
@djmonteur 3 года назад
Wes, thank you very much for this clear example. It really helped me and I got a workin' local docker compose file. cheers!
@WesDoyle
@WesDoyle 3 года назад
Great to hear!
@paralagente2741
@paralagente2741 2 месяца назад
Thank you for explaining clearly!! Loved❤
@georgesbataille69
@georgesbataille69 3 года назад
Loved it. Keep up the good work.
@reillymclaren9506
@reillymclaren9506 2 года назад
Very helpful! Thoroughly explained and very clear
@ikumitsushima5989
@ikumitsushima5989 3 месяца назад
I love the content of your videos, thank you!
@dawid_dahl
@dawid_dahl 3 года назад
So grateful for this video. Thank you!
@erickvidbaz3086
@erickvidbaz3086 2 года назад
Thank you very much Wes, great example!
@IntentStore
@IntentStore 2 года назад
finally someone who pronounces it right
@WesDoyle
@WesDoyle 2 года назад
:)
@igorbragaia4895
@igorbragaia4895 3 года назад
that's dope, bro! thanks a lot for the tutorial
@kimanje2patrick290
@kimanje2patrick290 4 года назад
Thanks a lot for a very nice example. This is the very video I needed
@wesselkalter
@wesselkalter 4 года назад
Thank you for the great demo!
@PVINFOLTEC
@PVINFOLTEC 2 года назад
Hi Wes, thanks for the tutorial, it helped me a lot!
@boi_doingthings
@boi_doingthings 3 года назад
Man. Absolutely amazing.
@maymontalvan
@maymontalvan 2 года назад
Genial!!!! Esto es lo que realmente estaba buscando, justo esto!!!! Gracias, tienes una suscriptora de habla hispana!!!
@WesDoyle
@WesDoyle 2 года назад
gracias
@chandarayi5673
@chandarayi5673 2 года назад
The best tutorial out there, thank you
@ericdwkim
@ericdwkim 2 года назад
Great explanation and detail. Subscribed!
@ameerhamza8735
@ameerhamza8735 3 года назад
best tutorial out there. kudos 👍
@UgurMahirOzkaya
@UgurMahirOzkaya 2 года назад
Great content! Ty Sir.
@goforshahriar
@goforshahriar 4 года назад
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
@kirillf.8053
@kirillf.8053 4 года назад
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.
@WesDoyle
@WesDoyle 4 года назад
Good questions, will answer anything missing in a followup video. Thank you
@WesDoyle
@WesDoyle 4 года назад
Good question, will answer in a followup video! Thanks for watching
@crimsonderiv
@crimsonderiv 3 года назад
Hello, newcomer here. Has the questions been answered ?
@goforshahriar
@goforshahriar 3 года назад
@@crimsonderiv no, not all.
@NiKo-yn4wn
@NiKo-yn4wn 3 года назад
Hi, do you have recommendations on how setting up SSL using your approach?
@josemiguelsanchez9124
@josemiguelsanchez9124 3 года назад
Excellent, excellent video... thanks a lot
@spicefiend
@spicefiend 2 года назад
You got a really soothing voice dude
@janmacku4633
@janmacku4633 3 года назад
Thanks, great video!
@Dorff_Meister
@Dorff_Meister 3 года назад
Helpful, thanks!
@msafdar5841
@msafdar5841 Год назад
thank you for this awesome video
@markobradonjic3192
@markobradonjic3192 4 года назад
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
@arpanbanerjee8584
@arpanbanerjee8584 3 года назад
Yes true, like how it works behind the scenes and why do we need it?
@zedium
@zedium Год назад
Great tutorial 👌
@_chidiebere4763
@_chidiebere4763 3 года назад
well Put!!! Thanks!
@joevu6629
@joevu6629 3 года назад
Thanks u so much! Your lesson has helped me a lot
@WesDoyle
@WesDoyle 3 года назад
Glad to hear that, Joe! Hope you are well.
@tigranrostomyan9231
@tigranrostomyan9231 11 месяцев назад
Thank you SO MUCH
@CripplingDuality
@CripplingDuality 4 года назад
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!
@WesDoyle
@WesDoyle 4 года назад
Thanks Natesh Mayuranathan - and great idea. I will put this in the queue of ops videos to record.
@diegofigueiredo7012
@diegofigueiredo7012 4 года назад
I'm using jwilder nginx reverse proxy Project to Java application.... Works fine
@memack101
@memack101 4 года назад
Great video! Would love more complex production geared version of this video. Thanks
@WesDoyle
@WesDoyle 4 года назад
Thanks Ramon! Will see what I can do about making a more in-depth follow up video. 👍
@ColdRooster
@ColdRooster 2 года назад
Muchas gracias amigo
@wiseskeshom4673
@wiseskeshom4673 2 года назад
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.
@WesDoyle
@WesDoyle 2 года назад
thanks for the information!
@ghilesdjebara8066
@ghilesdjebara8066 2 года назад
Thank you so much...
@user-rp9gi3xi5u
@user-rp9gi3xi5u 3 года назад
Excellent
@buscseik
@buscseik 2 года назад
Thank you
@khatuntsovmikhail6223
@khatuntsovmikhail6223 3 года назад
you pink courser just drive me nuts....
@richardwng
@richardwng 2 года назад
Hey man, awesome content right here. Would you mind sharing more about Nginx on Docker for Production build? Thanks in advance!
@amritpalhh9836
@amritpalhh9836 4 года назад
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?
@ariss3531
@ariss3531 3 года назад
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
@vigorousvoices
@vigorousvoices 3 года назад
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
@dapmas7
@dapmas7 Год назад
Great video! What theme and Color scheme are you using for terminal here?
@Stoney_Eagle
@Stoney_Eagle 3 года назад
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. 😉
@WesDoyle
@WesDoyle 3 года назад
Noted! Thanks for the feedback
@devendersingh238
@devendersingh238 4 года назад
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.
@WesDoyle
@WesDoyle 4 года назад
Hi Devender, nice -- K8s is a big topic, but definitely relevant to modern devops. Thanks for watching!
@harris9393
@harris9393 3 года назад
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?
@WesDoyle
@WesDoyle 3 года назад
hey Harris! great point
@skuttis4u
@skuttis4u 3 года назад
What YAML editor are you using in the video? Also excellent explanation
@bl4ckd4g3r3
@bl4ckd4g3r3 2 года назад
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
@hamadaparis3556
@hamadaparis3556 3 года назад
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 ?
@tanchwa3740
@tanchwa3740 2 года назад
So what does the remote address variable need to be set as for X forwarding?
@AdharshMk96
@AdharshMk96 2 года назад
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.
@ThingEngineer
@ThingEngineer 3 года назад
What a great demo touching on so many areas without going down rabbit holes.
@whynottyg7250
@whynottyg7250 3 года назад
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
@StMarc-ow4wz
@StMarc-ow4wz Год назад
How can we scale up the nginx reverse proxy container?
@omerapl3511
@omerapl3511 10 месяцев назад
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?
@arpanbanerjee8584
@arpanbanerjee8584 3 года назад
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.
@alexzander__6334
@alexzander__6334 2 года назад
why there isnt an EXPOSE port inside the weather_report app's dockerfile ?
@ghilesdjebara8066
@ghilesdjebara8066 2 года назад
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.
@michaeljones9229
@michaeljones9229 3 года назад
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
@magosimediahub1503
@magosimediahub1503 4 месяца назад
what if the microservices have diffrent yml file and the nginx has its own instead of making it just one file
@hemanshu877
@hemanshu877 4 года назад
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
@WesDoyle
@WesDoyle 4 года назад
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. 😀
@MarcosPsaro
@MarcosPsaro 2 года назад
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.
@WesDoyle
@WesDoyle 2 года назад
I’ll make a note to cover nginx in depth in a future video!
@mrk9674
@mrk9674 4 года назад
Why did you define "container name" in compose file? If this is set, containers cannot be scaled up ( multiple instances of the same container).
@WesDoyle
@WesDoyle 4 года назад
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.
@charliesta.abc123
@charliesta.abc123 3 года назад
If you ever come to South Africa I'd like to buy you your favourite beverage Wes
@WesDoyle
@WesDoyle 3 года назад
hope to take you up on that someday 😄
@shihabjamil7274
@shihabjamil7274 2 года назад
Please upload another video using https on nginx using openssl.
@Andbil
@Andbil 4 года назад
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
@WesDoyle
@WesDoyle 4 года назад
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
@MrDextre1480
@MrDextre1480 4 года назад
hello friend and with apache can you do it the same with dccker?
@WesDoyle
@WesDoyle 4 года назад
Hi dextre - yes, you can also run Apache in a container!
@donha475
@donha475 3 года назад
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??)
@donha475
@donha475 3 года назад
Caddy reverse proxy worked for this... not sure why I couldn't make nginx work...
@KaydotOrigin
@KaydotOrigin 3 года назад
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
@aarongoodrich6903
@aarongoodrich6903 3 года назад
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
@tanchwa3740
@tanchwa3740 2 года назад
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.
@tanchwa3740
@tanchwa3740 2 года назад
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.
@tanchwa3740
@tanchwa3740 2 года назад
any help from anyone would be appreciated I'm about to tear my hair out on all this
@MrEnsiferum77
@MrEnsiferum77 4 года назад
Why we need nginx.conf file in the frontend app?
@WesDoyle
@WesDoyle 4 года назад
Here we're using an nginx server to serve up the built Vue application!
@MrEnsiferum77
@MrEnsiferum77 4 года назад
@@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....
@uglevod184
@uglevod184 3 года назад
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
@wichukorndandecha
@wichukorndandecha 4 года назад
What theme vscode?
@WesDoyle
@WesDoyle 4 года назад
I'm using Night Wolf as a VS Code theme here.
@zaluq
@zaluq 2 года назад
What editor are you using there ?
@WesDoyle
@WesDoyle 2 года назад
vs code
@williamdevjs9974
@williamdevjs9974 3 года назад
15:54
@Chris-cl5gg
@Chris-cl5gg Год назад
i pulled your repo and it just doesnt work. i did not change anything. just a git clone and docker compose up. it failed!!!
@WesDoyle
@WesDoyle Год назад
Hi Chris, what details does the error message provide?
@Chris-cl5gg
@Chris-cl5gg Год назад
@@WesDoyle I'm going to check it as soon as I get home
@icomment4692
@icomment4692 Год назад
502 error
@cim8097
@cim8097 4 года назад
I prefer Traefik.
@WesDoyle
@WesDoyle 4 года назад
A solid choice!
@animatedbyJDK
@animatedbyJDK 21 день назад
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
Далее
Github Actions for Continuous Integration (CI)
17:54
🛑 до конца!
00:12
Просмотров 26 тыс.
Dockerize an Angular Application using Nginx
56:41
Просмотров 18 тыс.
The NGINX Crash Course
50:53
Просмотров 479 тыс.
How to create a great dev environment with Docker
29:55
Proxy vs Reverse Proxy Explained
8:05
Просмотров 354 тыс.
How to Setup a Reverse Proxy on Home Network
28:15
Просмотров 70 тыс.
Reverse Proxy vs API Gateway vs Load Balancer
3:06
Просмотров 111 тыс.