inflearn logo
강의

Course

Instructor

Nginx Introduction/Practice for Non-Majors

Interpreting HTTPS-related code written by Nginx and Certbot

HTTPS 관련 코드 해석하기

78

kimay9623

2 asked

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

Answer 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 리디렉션 설정과 보안 개선

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

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

0

3

0

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

0

7

1

iam 권한

0

14

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

144

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