inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Nhập môn/Thực hành Nginx mà người không chuyên cũng có thể hiểu được

Giải thích mã liên quan đến HTTPS do Nginx và Certbot tạo ra

HTTPS 관련 코드 해석하기

78

kimay9623

2 câu hỏi đã được viết

0

안녕하세요. 섹션 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) 는 없어도 되는거 아닌가요? 코드가 존재하는 다른 의도가 있는건지 궁금합니다.

aws nginx reverse-proxy infrastructure

Câu trả lời 2

0

jscode

안녕하세요 ! 질문 잘해주셨어요 !

질문해 주신 내용에 대해 답변드려볼게요 ~

 

말씀하신 대로 server_name jscode.p-e.kr에서 이미

해당 도메인으로 들어온 요청인지 확인하고 있기 때문에,

if ($host = jscode.p-e.kr) 조건문이 없어도 돼요 !

이 코드는 Certbot이 HTTPS 인증서를 설치하면서 자동으로 생성한 코드인데요,

Certbot이 안전하게 처리하기 위해 이중으로 체크하는 로직을 넣어준 거예요 ~

실제로 실무에서는 이런 중복 체크를 제거하고 더 간결하게 작성하기도 해요 !

listen 80과 server_name jscode.p-e.kr을 설정한 후 바로 return 301 https://hosthost hostrequest_uri로 리다이렉트 처리하는 식으로 if 문 없이도 동일하게 동작하도록 만들 수 있어요 !

server_name에서 이미 필터링이 되었기 때문에 바로 리다이렉트 처리해도 되는 거죠 :)

 

추가로 궁금하신 점 있으시면 언제든 편하게 질문 남겨주세요~~

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. kimay9623님.

Nginx와 Certbot을 활용한 HTTPS 설정은 웹서버에서 보안과 성능을 최적화하려는 목적을 가지고 있습니다. 주신 코드는 HTTP 요청을 HTTPS로 리디렉션하기 위한 구성인데, 이를 좀 더 이해하기 쉽게 설명드리겠습니다.

코드 해석:

  1. server_name 설정:

    • server_name jscode.p-e.kr; 이 부분은 이 서버 블록(server block)이 jscode.p-e.kr에 관련된 요청만 처리하도록 지정합니다.
  2. if블록 사용 이유:

    • if ($host = jscode.p-e.kr) 조건문을 사용하여 jscode.p-e.kr 호스트로 들어온 요청을 확인하고 HTTPS로 리디렉션합니다.
    • 이 조건이 불필요하다고 생각할 수 있지만, server_name은 여러 도메인(또는 서브도메인)을 처리할 수 있는 상황에서 유용합니다. 단일 도메인의 경우라면 삭제할 수도 있지만, 이 조건문은 리디렉션 로직을 명시적으로 하여 가독성을 높입니다.
  3. 리디렉션:

    • return 301 https://$host$request_uri;는 주어진 URL을 HTTPS로 리디렉션하여 요청된 URL의 경로와 쿼리 스트링을 그대로 유지합니다. 이는 보안과 SEO 친화적인 리디렉션 방식입니다.
  4. 404 응답:

    • 가드(guard) 역할을 해서 의도하지 않은 다른 요청이 들어올 경우에는 404 Not Found를 반환합니다. 이는 잠재적인 보안 문제를 방지합니다.

이 설정 방식은 HTTPS로의 무조건적인 리디렉션을 보장하여, jscode.p-e.kr에 대한 모든 HTTP 요청을 HTTPS로 전환하며, 잘못된 도메인의 접근은 차단하는 데 중점을 두고 있습니다.

관련된 더 많은 정보나 예제는 다음의 유사질문 링크에서 확인하실 수 있습니다:
- Nginx 리디렉션 설정과 보안 개선

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Docker + Spring Boot CI/CD 방법

0

8

1

정적 파일 서빙에 대한 성능 최적화에 대해 질문드립니다.

0

11

1

패키지 구분에 대해 궁금한게 있습니다

0

13

1

혹시 아파치 서버 관련 책이나 사이트도 추천해주실수 있으신가요..?

0

63

2

스프링부트 서버에 proxy_pass 할 때 질문 있습니다

0

71

2

꼭 conf.d에 default 파일이 있는상태에서 시작해야하나요 ??

0

72

2

default.conf 파일이 없습니다.

0

81

2

로드밸런싱 Server ID 출력에 관한 질문

0

54

2

default.conf

0

68

2

도메인 구매 시, AWS 결제 이력이 없으면 실패하니 참고바랍니다.

0

60

2

https는 백엔드에도 적용해야하나요?

0

126

2

Nginx의 성능을 알고 싶으면 리눅스 위에서 실행 시켜야 하잖아요..

0

96

2

챕터 22에대한 질문드립니다.

0

106

2

AWS EC2 인스턴스 생성하기 - 키페어 필요

0

137

2

https 적용 과정질문

0

185

2

프론트엔드 배포 역할 의미

1

141

2

도메인 네임 EC2에 연결하기

0

145

2

Vite 없이 React만 배포할 시

1

118

2

location = /50.x.html 블럭

0

120

2

NextJS 15버전의 경우 build 후 폴더가 다른 것 같습니다

0

358

2

상대경로 관련 질문드립니다!

0

156

2

nginx, DNS 순서 관련 질문

0

136

2

nginx 설정파일 root 설정 관련 문의

0

222

2

/etc/nginx/conf.d 디렉토리 내 default.conf가 없습니다

1

190

1