[Nginx] (2/2) 도대체 뭐길래 카카오, 네이버에서 사용할까
Vložit
- čas přidán 28. 08. 2024
- #nginx #웹서버 #apache
가장 핫한 웹서버인 nginx에 대해서 가져왔습니다.
총 2편으로 구성되어있습니다.
도움이 되셨기를 :D
===================================
⭐ Kite는 더 빠르고 더 스마트하게 코드를 자동화 할 수 있도록 도와주는 무료 AI 기반 코딩 도우미입니다. Kite 플러그인은 모든 최상위 편집자 및 IDE와 통합되어 입력하는 동안 스마트한 자동화와 설명서를 제공합니다. 6개월 동안 Kite를 사용해 왔는데 정말 좋아여😊!
www.kite.com/g...
제가 들은건 ssl 하려면 certbot이 필요한거로 알고있는데, nginx만으로도 https가 되는건가요?
certbot 써줘야죠!! 완전 초급자들 대상으로 설명한거라 생략했었어요~☺️
학생들 중에서도 공복님이랑 같은 질문했던 학생이 떠오르네영ㅋㅋㅋ
그러고보니 공복님 오랜만이네영 ㅋㅋ 꾸준히 봐주고 계셨군요🙌🏻
@@woorimit 와 저를 기억해주시나요.... 또르르... 사실 저는 엔터프라이즈쪽으로 가고싶어서 싱글턴이랑 대용량처리 좀 잘잡아주는 스프링부트로 갔사와요.. 한 겨울쯤에는 노드.js랑 리액트 배운거같은데 취업시장이나 고런거쫌 고민하다가..ㅎㅎ 그래도 http/https나 인프라, restAPI 이런거는 결을 같이해서 잘 보고있습니다!! 전 최근에 2개월 리액트+스프링부트+Jpa쓴 프로젝트하고 이제 코테준비하면서 하반기공채노리고있사와요.. 우림님은 강좌하면서 유튜브 영상도 일석이조로 잘 챙기고계신것같네용 ㅎㅎ
열심히 공부하던 분들은 기억이 안날수가 없는거같아요 ㅋㅋㅋ 자바로 갈아타셨군요! 좋은 선택하신것같아요 아무래도 한국에서는 자바시장이 훨씬 크다보니 취업뿐만아니라 이직할 때도 여러모로 좋은 점이 있으실 것 같네요😋
언젠간 현업에서 마주치는 날이 오면 좋겠네요 정말 반가울듯!!🐳
@@woorimit ㅋㅋ 도커임티인가요 귀엽네요~! 아무래도 전자정부프레임워크때문에 자바시장이 커진거랑 보수적인기업들땜시 자바가취업에선 쪼큼.. 그래도 msa가면 노드도 쓰고 네이버블로그도 노드도 노드도 충분히 대용량처리가능하고 자바도 자바8이상부터나 코틀린이나 스칼라처럼 일급함수다루는 함수형프로그래밍 지향하는거보니 자바스크립트랑 서로 닮아가려하는거같아요 응원해주셔서 감사합니다!!!
독학하면서 도대체 왜 nginx를 써야하는지 이해를 못해서 하루종일 끙끙거렸는데 15분 영상 보고 바로 이해 해버렸습니다..
너무 이해가 잘 됐습니다. 감사합니다
Nginx.. 말로만 듣다 이렇게 들으니까 이해가 쉽네요!! 옛날에 이름 첨보고 엔그닉? 진크스? 어떻게 읽는건가 헀는데ㅋㅋㅋ
기술면접 준비하느라 구경왔는데 이해하고갑니다 👍👍
최근에 개발 공부를 시작하고 있는데 설명을 너무 잘 해주셔서 영상 정말 잘 보고 있습니다 :)
내용 중에 질문이 있는데요~
1. (04:33) HTTP로 접속을 해도 HTTPS로 접속한 효과를 갖게 해준다고 말씀해 주셨는데 만약 이미지 대로 통신이 이루어지는 거라면 Client Nginx 구간은 일반 HTTP 통신을 하게 되어 패킷 암호화가 안 될 듯 한데 맞을까요??
2. (05:33) 301 상태코드로 return을 해주고 있는데 이렇게 되면 Nginx에서 바로 Client로 응답하게 되는 게 아닌지 궁금합니다. 아니면 1번 질문에서 여쭤봤던 이미지 대로 Client ==== HTTP(80) ====> Nginx ==== HTTPS(443) ====> Node.js 흐름대로 통신이 되는 걸까요?
==========================================
[HTTP로 접속을 해도 HTTPS로 접속한 효과를 갖는다]
[301 응답코드와 리다이렉션 주소를 리턴한다]
==========================================
위 이야기들로 봤을 때 제 부족한 이해로는 통신 흐름이 아래처럼 될 거라 생각했는데 이 부분이 궁금합니다
==========================================
(1) Client ---- HTTP(80) ----> Nginx
(2) Client Nginx ----> Node.js
(4) Client
맞습니다!
답변을 드린다 드린다 해놓고 기억 저편이 되어버렸네요..
이렇게 긴 글에 대한 답변은 제가 뒤로 미루곤 하는데 죄송합니답 🥹
질문의 난이도도 꽤 있어서 공부 좀 해본다는 게 많이 늦었습니다.
알게 되셨을 수 있지만, 다른 분들을 위해서라도 답변을 남겨보겠습니다.
1. (04:33) HTTP로 접속을 해도 HTTPS로 접속한 효과를 갖게 해준다고 말씀해 주셨는데 만약 이미지 대로 통신이 이루어지는 거라면 Client Nginx 구간은 일반 HTTP 통신을 하게 되어 패킷 암호화가 안 될 듯 한데 맞을까요??
정확합니다.
HTTPS는 모든 HTTP 요청 데이터를 네트워크로 보내기 전에 암호화 시켜줍니다.
HTTP 를 사용하면 전송 계층(TCP)에 암호와 없이 데이터가 전달됩니다. 때문에 OSI 7 계층 내에서 패킷 암호화 과정이 생략되어 전달되게 됩니다.
HTTPS 를 사용하면 전송 계층에서 전송 이전에 TLS(Transport Layer Security) 또는 SSL(Secure Sockets Layer)이라고 불리는 보안 계층을 통해 암호화 됩니다.
그래서, 우리 개발자들은 서비스를 구성할 때 보안을 위해 수행하는 일련의 작업들이 있는 것이죠.
a. 서버는 모든 콘텐츠가 HTTPS를 사용하여 로드되어야 한다.
b. 클라이언트의 데이터 전송은 HTTPS를 적용한다.
c. 모든 쿠키에 secure속성을 표시한다.
d. HTTP 페이지에서 HTTPS 페이지로의 리다이렉션이 자동으로 이루어져야한다. (위 강의에서 설명된 내용이죠)
e. 사이트는 Strict-Transport-SecurityHTTP 헤더를 사용하여 브라우저가 암호화된 채널을 통해서만 사이트에 연결되도록 할 수도 있다.
f. 콘텐츠를 로드할 수 있는 도메인을 제한한다. (CSP 적용 -> XSS 공격 방지 위해 사용)
등등 말고도 고민해야할 것들은 상당히 많죠.
일단은 이 점만 기억해도 될 것 같습니다.
"HTTP의 요청을 막자"
이것만 생각해도 굉장히 많은 부분의 문제가 해결될 것이니까요.
기본적으로 처음 naver.com 등의 사이트로 접속되면 http -> https 자동 우회 됩니다. http로 접속할 때에는 사실 서버로 전송하는 본문 데이터는 없지요. 따라서, http로 처음 페이지에 렌더링할 때 https로 우회만 시켜주고, 이후 클라이언트의 모든 데이터 요청을 https로 보내도록만 설정해준다면 많은 보안 문제를 해결할 수 있다고 생각합니다.
더 하고 싶은 얘기는 많지만, 요정도로 줄이겠습니다.
==============================
2. (05:33) 301 상태코드로 return을 해주고 있는데 이렇게 되면 Nginx에서 바로 Client로 응답하게 되는 게 아닌지 궁금합니다. 아니면 1번 질문에서 여쭤봤던 이미지 대로 Client ==== HTTP(80) ====> Nginx ==== HTTPS(443) ====> Node.js 흐름대로 통신이 되는 걸까요?
생각하신 흐름이 맞습니다 :D
==========================================
(1) Client ---- HTTP(80) ----> Nginx
(2) Client Nginx ----> Node.js
(4) Client
좋은 영상 감사합니다 잘봤습니다.
소중한 댓글 감사합니다.
도움이돼서 다행이네요😋
설명해주신 NginX의 사용 이유중에서 웹페이지 접근 인증에 대해서 질문 한가지 드려도 될까요? 인증을 하려면 필연적으로 서버에서 회원 정보를 조회해야하는데, 결국에 WAS를 거져서 DB에 접근해야하는 과정이기 때문에 WAS의 역할이라고 저는 생각되는데, NginX가 직접 DB에 접근 할 수도 있는건가요?
Nginx에서 DB에 접근할 수는 없어요! DB를 통하는 로직 구현은 모두 WAS에서 해줘야합니다😃
인증을하려면 회원 정보가 있어야 하죠. 맞습니다. 다만, NGINX에서 인증을 구현할 때는 그 회원 정보를 가진 서버가 nginx 웹서버 본인 스스로가 되는겁니다.
특정 라이브러리(htpasswd)를 쓰면, 유저아이디와 암호화된 패스워드로 인증파일을 하나 생성해주는데 해당 파일의 정보와 입력된 클라이언트의 유저정보가 일치하는지만 단순히 검증하게 돼요.
결론:
1. NGINX로 인증을 구현할 수 있다.
2. NGINX의 인증은 단순 정보의 일치/불일치에 대한 검증이다.
3. NGINX의 인증은 보안에 취약하니 사용하지 말자. -> WAS에서 하자.
4. NGINX는 DB에 접근할 수 없다. -> DB 접근 로직은 무조건 WAS에서 해야한다.
답변이 됐을까요~~?
화해방님 오랜만에 뵙네요~~ 너무 반가워용ㅋㅋ 좋은 질문 감사합니다 :D
덕분에 저도 htpasswd 라이브러리 알게됐네엽!
앞으로도 종종 들러주세요~ 늘 응원합니다😁
@@woorimit 감사합니다! 명료하게 설명해주셔서 확실히 이해 됐습니다!
와! 저를 기억하세요?! 감동이에요 ㅜ 댓글을 안 달았지만 영상 올라올때마다 열심히 보고 있습니다 ㅋㅋ 형님 분 노래부르신 것도 아직도 종종 들어요
저두 개인적으로 많이 응원하는 유튜버이시자 랜선 선배님 이십니다 ㅋㅋ구독자가 많이 늘었네요!! 10만 이상까지 쭉쭉 올라가길 기원하겠습니다! 😄
영상 감사합니다
알기 쉽게 잘 설명해주시네요! 저도 저런 선생님이 앞에 있었으면 좋겠습니다. nginx.conf 파일과 conf.d 폴더 내 default 파일이 하는 일이 다른가요? 설정 파일 내용보면 비슷한 것 같던데..
확인이 늦어 죄송합니다.
nginx.conf 파일이 NGINX의 설정을 관리하는 메인 파일입니다.
메인 파일 안에서 conf.d 등의 폴더에 있는 config 설정 파일들을 import하여 불러옵니다.
defualt 파일은 음.. 그냥 이런 식으로 사용하면 됩니다.. 라고 하는 기본 설정 파일이랄까요??
파일명 변경하고, nginx.conf에 임포트해서 사용해도 됩니답 ㅎㅎ
보통 NGINX에서 관리할 각 서버들의 설정들을 분리하여 유지보수를 편리하게 하기 위해 사용합니다. (저는 그렇습니다)
답이 많이 늦었지만, 다른 분들께도 도움이 되었으면 하는 마음에 답변드려봤습니다.
좋은 글 남겨주셔서 감사합니다 ☺
감사합니다!
전효진 변호사님 영상 다시 올려주실 수 있나요?
만약 nodejs 로만 구성을 한다고 하면 load 밸런서(마이크로 서비스)를 따로쓰고 cloudflare같은 플랫폼에서 제공하는 ssl을 써도 구성은 가능할까요?
네 무조건 가능하다고 봅니다^^
혹시 따로 강의 같은거를 하시는걸까요?
음 전문 강사로 활동하는 건 아니구, 개별 요청이 들어오면 해드리곤 합니다 ㅎㅎ
오... 멋있는데~~