안녕하세요. 섹션 7의 "35. Nginx, Certbot이 작성한 HTTPS 관련 코드 해석하기" 강의를 들으면서 궁금한 점이 생겨서 질문 남깁니다. server { # 2. 들어온 요청의 주소의 Host가 jscode.p-e.kr일 경우 (ex. http://jscode.p-e.kr/about) # https://jscode.p-e.kr/...(ex. https://jscode.p-e.kr/about)로 리다이렉트(301) 처리 if ($host = jscode.p-e.kr) { return 301 https://$host$request_uri; } # managed by Certbot # 1. jscode.p-e.kr 주소로 들어온 요청이면서 # 80번 포트(http)로 들어오는 요청일 때 # 이 server 블럭에서 처리하도록 설정 listen 80; server_name jscode.p-e.kr; # 3. 그 이외의 경우에는 404(Not Found)로 응답 return 404; # managed by Certbot } 강의자료에서 제공해주시는 /etc/nginx/conf.d/default.conf 파일의 일부 코드입니다. 이미 server_name에서 jscode.p-e.kr 주소로 들어온 요청인지 확인하니깐, if( $host = jscode.p-e.kr ) 는 없어도 되는거 아닌가요? 코드가 존재하는 다른 의도가 있는건지 궁금합니다.
로드 밸런싱 대상 서버들을 upstream이라는 그룹으로 묶는 코드에 질문이 있습니다. upstream backend { server localhost:8080; server localhost:8081; } 위 코드에서는 사실 서버는 1대이고, 포트번호만 8080과 8081로 로드밸런싱한 것 아닌가요? 실제로 서버 2대로 로드밸런싱을 하려면 localhost:8080과 localhost:8081 자리에 서버 도메인 주소가 들어가면 되는 건가요? 또한, 제가 말한 것이 맞다면 /health에 요청할 때마다 나타나는 Server ID는 같아야 하는 것인데, 왜 다르게 나오는 건가요?
안녕하십니까 선생님, 35번 강의에서 /etc/nginx/conf.d/default.conf 이 경로에 default.conf 파일이 존재하지 않습니다. Certbot, HTTPS 인증서는 모두 정상적으로 받았습니다. 강의 놓친 부분은 없는데 어디서 문제인 지 모르겠습니다..
강의 진행을 위해 처음으로 AWS에 e2를 등록하고 진행 중인데요. 이 강의를 따라 도메인 구매를 진행하려 하니까. 실패했는데 아무래도 최소 한 번의 결제 내역이 필요한 것 같습니다. (당시 제가 aws에 문의하여 받은 답변은 이렇습니다 " 본 계정은 비교적 최근 생성된 계정으로 도메인 등록을 위해 지속적인 AWS 서비스 사용을 통한 안정적이고 충분한 결제 내역이 필요합니다. AWS 사용 이력이 더욱 쌓이면 고객님의 필요사항을 재검토할 수 있습니다." ) 한달 지나서 e2에 대한 결제가 이뤄지니까. 도메인 구매에 성공했는데 비슷한 문제가 있으신 분들 참고하면 좋을 것 같습니다.
안녕하세요. 제가 집에서 Nginx 성능 테스트를 진행해보았습니다. 먼저, Windows 환경(로컬 컴퓨터) 에서 직접 Nginx를 설치 후 실행했고, WSL2 환경(리눅스 커널 기반) 위에서도 Nginx를 설치해 실행해보았습니다. 그런데 ChatGPT에 문의해보니, Nginx의 sendfile() 을 통한 커널 레벨 zero-copy 최적화 를 제대로 체감하려면 Windows가 아닌 리눅스 환경 에서 실행해야 한다고 하더군요. Windows 커널에서는 해당 기능을 완전히 지원하지 않는다고 합니다. 또한, WSL2 위에서 Nginx를 실행하고 Windows 브라우저로 접속할 경우 , WSL2(리눅스 커널)와 Windows(호스트 OS) 간 통신 과정에서 지연이 발생할 수 있다는 설명도 들었습니다. 그래서 “그럼 도커를 쓰면 되나?” 싶어서 예전에 구매했던 강사님의 Docker 강의를 참고하려고 했습니다. 마침 강의 내용 중 Nginx 설치 및 설정 실습 파트 가 있어서 그대로 따라보려 했는데요, ChatGPT의 설명에 따르면 Docker도 결국 WSL2 위에서 동작 한다고 합니다. 즉, WSL2에서 직접 실행하는 것보다는 최적화되어 있지만, Windows 브라우저에서 요청을 보낼 때는 여전히 변환 과정이 존재 해서 원하는 수준의 “커널 레벨 I/O 성능 비교”를 얻기는 어렵다는 답변을 받았습니다. 제가 확인하고 싶은 부분은 단순히 Tomcat과 Nginx 간의 정적 콘텐츠 처리 성능 차이 입니다. (참고로, Nginx는 이벤트 드리븐 I/O 모델(epoll 등)을 기반으로 동작하며, 리눅스에서는 sendfile() 시스템 콜을 통해 커널 수준에서 파일을 소켓으로 직접 전송하는 zero-copy 최적화를 지원한다고 합니다. 이 기능은 리눅스 커널에서 가장 효율적으로 동작하며, Windows 환경에서는 동일한 수준의 최적화가 적용되지 않는다고 합니다. ChatGPT를 통해 얻은 정보이며, 이 부분을 실제로 테스트해보고 싶었습니다.) 그래서 궁금한 점이 있습니다. 👉 이러한 sendfile() 기반 zero-copy 최적화를 직접 체감하려면, 강사님께서 강의에서 보여주신 것처럼 AWS 리눅스 서버(EC2) 위에서 Nginx를 띄워 테스트하는 것이 가장 정확한 방법일까요? 즉, Windows나 WSL2 환경이 아닌, AWS 리눅스 환경에서 Nginx를 실행해야만 커널 수준 I/O 성능을 정확히 확인할 수 있는지 궁금합니다 ㅠㅠㅠㅠ Nginx에 대해 공부해보고 싶은데 환경 세팅부터 막히니까 조금 답답합니다.. ㅠㅠ ㅠㅠ ㅠㅠ
안녕하세요! 강의 잘 보고 있습니다. 한 가지 궁금한 점이 있어 질문드립니다. "HTTPS는 왜 적용해야 할까?" 파트 보다가 문득 궁금해졌는데요, 이전 강의에서 admin 페이지와 일반 페이지를 나눠서 default.conf 에 설정하신 부분 설명해주셨는데 여러개의 사이트같은 케이스는.. 실무에서는 certbot 적용 강의처럼 하는 절차일까요? 한번에 적용이 되는것일까요? 그러면.. SSL(HTTPS) 적용은 처음 한번만 하는것인지.. 아니면 (일정기간마다) 주기적으로 적용을 하시는지 궁금합니다.
안녕하세요 https 예전에 적용해본적이 있었는데 CA기관과 통신하여 개인키 발급받고 하면서 좀 복잡하게한거랑 AWS에서 인증서 발급하고 도메인주소 cname하면서 https 적용 이렇게 해본적이 있는데 1. Nginx는 실무에서 이렇게 간단하게 https 를 적용하나요? 2. 제가 했던것과 방식과 certbot의 차이 혹시 알수 있나요? 단순히 그냥 방법만 다르고 실상은 똑같은 건지 궁금합니다. 3. 스프링부트만으로 aws에서 배포한 적이 있는데 certbot 적용이 가능한가요?
강사님 강의를 따라하면서 EC2에 도메인 네임을 연결했는데 Ipv4주소로 들어갈때는 페이지가 잘 나오는데 도메인 네임으로 들어가면 사이트에 연결할 수 없다고 뜹니다 .Route 53에서 레코드 생성하면서 IP 주소를 입력해서 넣었고 저의 EC2 IP주소와 일치하는 것도 확인했습니다. 1. Nginx 서버가 정상적으로 동작하는지 sudo systemctl status nginx 입력하여서 active(running)되는 것을 확인하였고 2. EC2에서 로컬로 접속 가능한지 curl -I http://localhost curl -I http://api.jscode-test.com 각각 입력하여서 200 OK 뜨는것을 확인했습니다. GPT에서는 3번쨰 방법으로 /etc/nginx/conf.d/api.jscode-test.com.conf 파일이 있는지 확인하고, 내용이 올바른지 점검하세요 라고 조언을 주었는데 어떻게 해야하는지 알 수 있을까요?
안녕하세요! 좋은 강의 잘 보고 있습니다!! default.conf 파일에서 location = /50.x.html 블럭의 역할이 location / 블럭과 동일해서 필요없는거 같은데 존재하는 이유가 뭔가요?? 단지, 현재는 두개의 블럭의 root 값이 똑같아서 그런거고 나중에 달라질수 있기때문에 일단 블럭이 2개 만들어져있는 건가요 ??
현재 폴더 구조가 etc > nginx > conf.d > default.conf, websites입니다. default.conf에 상대경로를 작성할 때, default.conf와 websites 폴더가 같은 경로에 위치하기 때문에 websites/~(websites부터 작성)로 작성하면 될 것이라고 생각했는데 왜 conf.d부터 경로를 시작하는 것인가요?