Docker and Nginx Reverse Proxy

Поделиться
HTML-код
  • Опубликовано: 9 сен 2024

Комментарии • 133

  • @NoirExtra
    @NoirExtra 4 года назад +27

    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 ;)

  • @hopeitworks2085
    @hopeitworks2085 4 года назад +17

    This is one such simple and an excellent video to learn. This helped me a lot. You are a life savior. Thank you

  • @goforshahriar
    @goforshahriar 4 года назад +19

    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 года назад +5

      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 года назад +5

      Good questions, will answer anything missing in a followup video. Thank you

    • @WesDoyle
      @WesDoyle  4 года назад +3

      Good question, will answer in a followup video! Thanks for watching

    • @crimsonderiv
      @crimsonderiv 4 года назад

      Hello, newcomer here. Has the questions been answered ?

    • @goforshahriar
      @goforshahriar 4 года назад +1

      @@crimsonderiv no, not all.

  • @christopherrodriguezconde7693
    @christopherrodriguezconde7693 3 года назад +4

    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! :)

  • @realist.network
    @realist.network 2 года назад +1

    Wes, you are exceptional at explaining things, compared to the dozens of blog posts I found. Thank you very much!

  • @shanebenlolo4866
    @shanebenlolo4866 3 года назад +2

    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

  • @wamanyewle1103
    @wamanyewle1103 4 года назад +1

    One of the best videos for NGINX understanding. Explained in very very simple language. Thank you

  • @IntentStore
    @IntentStore 2 года назад +1

    finally someone who pronounces it right

  • @CodingEntrepreneurs
    @CodingEntrepreneurs 3 года назад +5

    This is absolutely great Wes! Thanks for sharing

    • @WesDoyle
      @WesDoyle  3 года назад

      Glad you enjoyed it!

  • @jorgepvenegas
    @jorgepvenegas 2 года назад +1

    This video covers so much and so clearly. Thanks for posting it!

  • @Grimreap191
    @Grimreap191 2 года назад +1

    Really great tutorial. Couldn't find anything else like this online. Thanks a lot!

  • @galvanino
    @galvanino 4 года назад +1

    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.

  • @paralagente2741
    @paralagente2741 4 месяца назад

    Thank you for explaining clearly!! Loved❤

  • @erickvidbaz3086
    @erickvidbaz3086 3 года назад +1

    Thank you very much Wes, great example!

  • @spicefiend
    @spicefiend 2 года назад +1

    You got a really soothing voice dude

  • @NiKo-yn4wn
    @NiKo-yn4wn 4 года назад +19

    Hi, do you have recommendations on how setting up SSL using your approach?

  • @alexpaden5159
    @alexpaden5159 2 года назад +1

    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.

  • @arsalanahmad1832
    @arsalanahmad1832 3 года назад +1

    great tutorial man, I keep coming back to this again and again when I am lost. nicely explained. Keep up the great work

  • @roeifinkelstein118
    @roeifinkelstein118 2 года назад +1

    This helped me a lot. Super clear and to the point. Just what I needed. Thanks Wes !

  • @ikumitsushima5989
    @ikumitsushima5989 5 месяцев назад

    I love the content of your videos, thank you!

  • @dawid_dahl
    @dawid_dahl 3 года назад +1

    So grateful for this video. Thank you!

  • @_chidiebere4763
    @_chidiebere4763 3 года назад +1

    well Put!!! Thanks!

  • @UgurMahirOzkaya
    @UgurMahirOzkaya 2 года назад +1

    Great content! Ty Sir.

  • @josemiguelsanchez9124
    @josemiguelsanchez9124 3 года назад +1

    Excellent, excellent video... 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!

  • @maymontalvan
    @maymontalvan 2 года назад

    Genial!!!! Esto es lo que realmente estaba buscando, justo esto!!!! Gracias, tienes una suscriptora de habla hispana!!!

  • @georgesbataille69
    @georgesbataille69 3 года назад +2

    Loved it. Keep up the good work.

  • @igorbragaia4895
    @igorbragaia4895 3 года назад +2

    that's dope, bro! thanks a lot for the tutorial

  • @wiseskeshom4673
    @wiseskeshom4673 2 года назад +1

    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 года назад +1

      thanks for the information!

  • @kimanje2patrick290
    @kimanje2patrick290 4 года назад +1

    Thanks a lot for a very nice example. This is the very video I needed

  • @ameerhamza8735
    @ameerhamza8735 3 года назад +1

    best tutorial out there. kudos 👍

  • @ColdRooster
    @ColdRooster 2 года назад +1

    Muchas gracias amigo

  • @reillymclaren9506
    @reillymclaren9506 2 года назад

    Very helpful! Thoroughly explained and very clear

  • @djmonteur
    @djmonteur 3 года назад +1

    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 года назад +2

      Great to hear!

  • @diegofigueiredo7012
    @diegofigueiredo7012 4 года назад +1

    I'm using jwilder nginx reverse proxy Project to Java application.... Works fine

  • @PVINFOLTEC
    @PVINFOLTEC 2 года назад

    Hi Wes, thanks for the tutorial, it helped me a lot!

  • @ariss3531
    @ariss3531 3 года назад +2

    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

  • @markobradonjic3192
    @markobradonjic3192 4 года назад +6

    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?

  • @chandarayi5673
    @chandarayi5673 2 года назад

    The best tutorial out there, thank you

  • @linusmeier9515
    @linusmeier9515 2 года назад

    This is absolutely brilliant! Really what I was looking for - thank you so much!

  • @richardwng
    @richardwng 2 года назад +1

    Hey man, awesome content right here. Would you mind sharing more about Nginx on Docker for Production build? Thanks in advance!

  • @khatuntsovmikhail6223
    @khatuntsovmikhail6223 3 года назад +1

    you pink courser just drive me nuts....

  • @msafdar5841
    @msafdar5841 Год назад

    thank you for this awesome video

  • @buscseik
    @buscseik 2 года назад +1

    Thank you

  • @ericdwkim
    @ericdwkim 2 года назад

    Great explanation and detail. Subscribed!

  • @wesselkalter
    @wesselkalter 4 года назад +1

    Thank you for the great demo!

  • @zedium
    @zedium 2 года назад

    Great tutorial 👌

  • @Dorff_Meister
    @Dorff_Meister 3 года назад +1

    Helpful, thanks!

  • @boi_doingthings
    @boi_doingthings 3 года назад

    Man. Absolutely amazing.

  • @tigranrostomyan9231
    @tigranrostomyan9231 Год назад

    Thank you SO MUCH

  • @memack101
    @memack101 4 года назад +1

    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. 👍

  • @CripplingDuality
    @CripplingDuality 4 года назад +2

    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 года назад +2

      Thanks Natesh Mayuranathan - and great idea. I will put this in the queue of ops videos to record.

  • @Stoney_Eagle
    @Stoney_Eagle 3 года назад +1

    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 года назад +1

      Noted! Thanks for the feedback

  • @user-rp9gi3xi5u
    @user-rp9gi3xi5u 3 года назад +1

    Excellent

  • @devendersingh238
    @devendersingh238 4 года назад +1

    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 года назад +1

      Hi Devender, nice -- K8s is a big topic, but definitely relevant to modern devops. Thanks for watching!

  • @janmacku4633
    @janmacku4633 3 года назад

    Thanks, great video!

  • @ghilesdjebara8066
    @ghilesdjebara8066 2 года назад

    Thank you so much...

  • @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.

  • @omerapl3511
    @omerapl3511 Год назад

    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?

  • @dapmas7
    @dapmas7 2 года назад +1

    Great video!
    What theme and Color scheme are you using for terminal here?

  • @charliesta.abc123
    @charliesta.abc123 3 года назад +1

    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 😄

  • @vigorousvoices
    @vigorousvoices 3 года назад +2

    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

  • @aarongoodrich6903
    @aarongoodrich6903 3 года назад +1

    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

  • @shihabjamil7274
    @shihabjamil7274 2 года назад

    Please upload another video using https on nginx using openssl.

  • @ghilesdjebara8066
    @ghilesdjebara8066 2 года назад +1

    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.

  • @hamadaparis3556
    @hamadaparis3556 3 года назад +1

    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 ?

  • @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.

  • @AdharshMk96
    @AdharshMk96 3 года назад +1

    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.

  • @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

  • @alexzander__6334
    @alexzander__6334 2 года назад

    why there isnt an EXPOSE port inside the weather_report app's dockerfile ?

  • @harris9393
    @harris9393 4 года назад +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  4 года назад +1

      hey Harris! great point

  • @mrk9674
    @mrk9674 4 года назад +1

    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 года назад +1

      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.

  • @magosimediahub1503
    @magosimediahub1503 5 месяцев назад

    what if the microservices have diffrent yml file and the nginx has its own instead of making it just one file

  • @tanchwa3740
    @tanchwa3740 2 года назад

    So what does the remote address variable need to be set as for X forwarding?

  • @amritpalhh9836
    @amritpalhh9836 4 года назад +1

    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?

  • @StMarc-ow4wz
    @StMarc-ow4wz Год назад

    How can we scale up the nginx reverse proxy container?

  • @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

  • @MarcosPsaro
    @MarcosPsaro 2 года назад +1

    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!

  • @skuttis4u
    @skuttis4u 3 года назад

    What YAML editor are you using in the video?
    Also excellent explanation

  • @ThingEngineer
    @ThingEngineer 4 года назад +1

    What a great demo touching on so many areas without going down rabbit holes.

    • @whynottyg7250
      @whynottyg7250 3 года назад +1

      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

  • @hemanshu877
    @hemanshu877 4 года назад +1

    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. 😀

  • @MrDextre1480
    @MrDextre1480 4 года назад +1

    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 года назад +1

    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 года назад +1

      Caddy reverse proxy worked for this... not sure why I couldn't make nginx work...

  • @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

  • @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 года назад +1

    Why we need nginx.conf file in the frontend app?

    • @WesDoyle
      @WesDoyle  4 года назад +1

      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....

  • @icomment4692
    @icomment4692 Год назад

    502 error

  • @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

  • @cim8097
    @cim8097 4 года назад +2

    I prefer Traefik.

    • @WesDoyle
      @WesDoyle  4 года назад +1

      A solid choice!

  • @wichukorndandecha
    @wichukorndandecha 4 года назад +1

    What theme vscode?

    • @WesDoyle
      @WesDoyle  4 года назад +3

      I'm using Night Wolf as a VS Code theme here.

  • @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 года назад +1

      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

  • @Chris-cl5gg
    @Chris-cl5gg 2 года назад

    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  2 года назад

      Hi Chris, what details does the error message provide?

    • @Chris-cl5gg
      @Chris-cl5gg 2 года назад

      @@WesDoyle I'm going to check it as soon as I get home

  • @zaluq
    @zaluq 2 года назад

    What editor are you using there ?

  • @williamdevjs9974
    @williamdevjs9974 3 года назад

    15:54

  • @animatedbyJDK
    @animatedbyJDK 2 месяца назад

    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