NGINX Gateway Fabric HTTP 서비스 라우팅 및 HTTPS Termination 구성
NGINX Gateway Fabric 을 활용하여 HTTP 및 HTTPS 서비스를 라우팅하고 SSL/TLS Termination을 구현하는 방법을 다룹니다. Gateway API를 사용하여 HTTP 및 HTTPS 프로토콜의 라우팅 구조를 효율적으로 설정하고, HTTP 요청을 HTTPS로 리다이렉트하는 구성 방식을 단계별로 설명합니다. 이를 통해 안정적이고 보안이 강화된 네트워크 서비스를 제공하는 방법을 알 수 있습니다.
목차
1. 환경 구성
2. NGINX Gatway Fabric : HTTP Service Route
3. NGINX Gatway Fabric : HTTPS Service Route & HTTP to HTTPS Redirect
4. 결론
1. 환경 구성
NGINX Gateway Fabric의 설치는 NGINX Gateway Fabric 설치 문서에서 확인할 수 있습니다.
- NGINX Gateway Fabric 1.5.1 (Gateway API)

- NGINX(OSS): 1.27.2

2. NGINX Gatway Fabric : HTTP Service Route
NGINX Gateway Fabric에서 HTTP Service Route를 하는 방법은 Ingress와 다릅니다.
Gateway API가 생기게 되면서 HTTPRoute와 Gateway 리소스를 사용하여 서비스 라우트를 진행할 수 있습니다.
- Gateway : 서비스와 같은 백엔드에 대한 트래픽 처리, 밸런싱, 분할 등에 사용할 수 있는 네트워크 엔드포인트를 정의합니다.
Gateway를 구성합니다.
# Gateway.yaml
apiVersion: gateway.networking.k8s.io/v1 # Gateway 리소스의 API 버전을 지정합니다.
kind: Gateway # 클러스터 내에서 HTTP 및 기타 프로토콜 요청을 처리하는 Gateway 리소스를 정의합니다.
metadata:
name: nginx # Gateway 리소스의 이름을 지정합니다.
namespace: nginx # Gateway 리소스의 이름을 지정합니다.
spec:
gatewayClassName: nginx # Gateway API를 NGINX Gateway Fabric로 사용합니다.(설치과정에 포함 되어 있습니다.)
listeners:
- name: http # listerners의 이름을 지정합니다.(HTTPRoute parentRefs의
port: 80 # 80포트를 수신합니다.
protocol: HTTP # HTTP 프로토콜을 수신합니다.
- HTTPRoute : 백엔드 네트워크 엔드포인트로의 HTTP 요청 라우팅 동작을 지정합니다.
HTTPRoute를 구성합니다.
# HTTPRoute.yaml
apiVersion: gateway.networking.k8s.io/v1 # HTTPRoute 리소스의 API 버전을 지정합니다.
kind: HTTPRoute # HTTP 요청을 라우팅하는 리소스입니다.
metadata:
name: nginx-route # HTTPRoute 리소스의 이름을 지정합니다.
namespace: nginx # HTTPRoute의 네임스페이스를 지정합니다.
spec:
parentRefs:
- name: nginx # Gateway의 리소스 이름을 명시합니다.
hostnames:
- "example.com" # 지정된 호스트로 들어오는 요청을 처리합니다.
rules:
- matches:
- path:
type: PathPrefix # Path 기반 라우팅을 진행합니다.
value: / # "/" 경로를 매칭합니다
backendRefs:
- name: nginx-svc #요청을 라우팅할 대상 서비스의 이름을 지정합니다.
port: 80 # 서비스에 지정된 Port를 지정합니다.
위의 구성들을 추가한 후 각각의 리소스를 확인합니다.


위와 같이 구성한 후 NGINX Gateway Fabric Service로 접근합니다.

NGINX Gateway Fabric으로 Service를 라우트하여 보여주는 것을 확인할 수 있습니다.
3. NGINX Gatway Fabric : HTTPS Service Route & HTTP to HTTPS Redirect
NGINX Gateway Fabric에서 HTTPS Service Route를 하는 방법은 아래와 같습니다.
먼저 사용 할 SSL/TLS 인증서를 Secret으로 생성합니다.

이전에 생성했었던 Gateway 구성에서 HTTPS의 포트와 SSL/TLS Secret을 추가합니다.
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: nginx
namespace: nginx
spec:
gatewayClassName: nginx
listeners:
- name: http
port: 80
protocol: HTTP
- name: https
port: 443 # HTTPS Port를 지정합니다.
protocol: HTTPS # HTTPS 프로토콜을 사용합니다.
tls:
mode: Terminate # SSL/TLS Termination을 사용합니다.
certificateRefs: # SSL/TLS 인증서를 적용합니다.
- kind: Secret # Secret 리소스를 명시합니다.
name: example.com # 생성 했었던 Secret의 이름을 명시합니다.
namespace: nginx # 생성 했었던 Secret의 네임 스페이스을 명시합니다.
Gateway를 구성한 후 Route를 변경합니다.
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: nginx-tls-redirect
namespace: nginx
spec:
parentRefs:
- name: nginx # nginx 이름의 Gateway 구성을 사용합니다.
sectionName: http # nginx Gateway의 http 프로토콜의 Listener 이름을 명시합니다.
hostnames:
- "example.com"
rules:
- filters: # 요청에 적용되는 filter를 지정합니다.
- type: RequestRedirect # 요청을 Redirect합니다.
requestRedirect:
scheme: https # https 프로토콜으로 Redirect 합니다.
port: 30903 # NodePort로 서비스를 외부에서 접속하게 변경하였기 때문에 NodePort로 Redirect 되도록 지정하였습니다. 실제 서비스 환경에서는 443 HTTPS 포트를 사용해야합니다.
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: nginx-route
namespace: nginx
spec:
parentRefs:
- name: nginx # nginx 이름의 Gateway 구성을 사용합니다.
sectionName: https # nginx Gateway의 http 프로토콜의 Listener 이름을 명시합니다.
hostnames:
- "example.com"
rules:
- matches:
- path:
type: PathPrefix
value: /
backendRefs:
- name: nginx-svc
port: 80
위와 같이 구성하게 된다면 SSL/TLS 인증서 적용과 HTTP에서 HTTPS로 리다이렉트 되는 것을 볼 수 있습니다.
Redirect HTTP Status Code 및 Location Header (443 NodePort : 30903)

HTTPS SSL/TLS 인증서 적용 화면

4. 결론
NGINX Gateway Fabric과 Gateway API를 활용하면 HTTP 및 HTTPS 라우팅과 SSL/TLS Termination을 손쉽게 구성할 수 있습니다. Gateway와 HTTPRoute 리소스의 구조적 설계를 통해 유연하고 확장 가능한 네트워크 환경을 구축할 수 있으며, HTTP에서 HTTPS로 리다이렉트하는 과정을 통해 보안을 강화할 수 있습니다. 이러한 구성을 통해 높은 가용성과 안정성을 갖춘 서비스 배포가 가능해집니다.
NGINX Gateway Fabric에 관련한 더 많은 정보들을 알고싶으시다면 NGINX STORE Kubernetes 카테고리를 참고해주세요.
댓글을 달려면 로그인해야 합니다.