LINUX

[Nginx] Nginx HTTP redirect 및 포트포워딩(Port Forwarding) 설정

Remoted remoted 2021. 7. 14. 18:26

 

Nginx 에서 HTTP 프로토콜에 대하여 HTTPS로 redirect 설정하는 것과 다른 포트로 포트포워딩(Port Forwarding) 하는 설정 내용을 정리합니다.


테스트 환경

 

 

Nginx를 설치 및 HTTPS 설정된 환경에서 진행을 하고 위 링크의 포스트가 선행되어야 하겠습니다.


Nginx HTTP redirect to HTTPS

HTTP redirect는 HTTP(비암호화 프로토콜)로 접속했을 때 자동적으로 HTTPS 프로토콜로 서비스되도록 리다이렉트 처리를 하는 것입니다.

일반적으로 사이트 접속 시 jackerlab.com 이렇게 도메인을 치고 사이트 접속을 하면 https://jackerlab.com과 같은 형태의 HTTP 프로토콜로 접속이 됩니다.

사이트를 항상 HTTPS로 서비스하기 위하여 HTTPS로 리다이렉트 처리하여 HTTPS로 접속을 전환/유도하는 것입니다.

Redirect 설정은 /etc/nginx/nginx.conf 파일에서 설정하고 Nginx 서비스를 구동하면 되고 HTTPS(443) 설정이 사전에 되어 있어야 합니다.

[root@jackerlab ~]# vim /etc/nginx/nginx.conf ... (앞부분 생략) server { listen 80 default_server; listen [::]:80 default_server; #server_name _; server_name apps.jackerlab.com; root /usr/share/nginx/html; charset utf-8; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } return 301 https://$host$request_uri; # HTTP to HTTPS redirect } ... (뒷부분 생략 - 뒷부분의 HTTPS 설정이 되어 있어야 함) [root@jackerlab ~]#

위 설정은 마지막 부분에 1줄 추가가 된 상태고 301 HTTP 응답 코드에 의하여 https://도메인으로 redirect 처리 해주는 설정입니다.


Nginx 포트 포워딩 설정

웹 어플리케이션을 작성했을 때 HTTPS 통신을 하기 위하여 포트 포워딩을 사용할 수 있겠습니다.

예를 들어 React, Django 등의 웹서버가 별도로 구동되어 있을 경우, HTTPS인 443 포트에 React(3000), Django(8000) 매핑을 하여 HTTPS 프로토콜로 웹 서비스를 제공할 수 있겠습니다.

이번 테스트에서는 React(3000) 가 구동되었다고 가정하고 포트포워딩 설정을 해보겠습니다.

Redirect 설정과 연계되어 있고 최종적으로는 아래와 같은 구조가 되겠습니다.

최종적으로 사이트를 접속하면 HTTPS 암호화 통신 환경에서 React(3000) 어플리케이션에 접속이 되는 것입니다.

/etc/nginx/nginx.conf 파일에서 설정하고 Nginx 서비스를 구동하면 되고 HTTPS(443) 설정 및 React(3000) 서비스 구동이 사전에 되어 있어야 합니다.

[root@jackerlab nginx]# cat nginx.conf ... (앞부분 생략 - HTTP(80) 설정 부분) # Settings for a TLS enabled server. server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name localhost; # server_name apps.jackerlab.com; root /usr/share/nginx/html; ssl_certificate /etc/letsencrypt/live/apps.jackerlab.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/apps.jackerlab.com/privkey.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 10m; ssl_ciphers PROFILE=SYSTEM; ssl_prefer_server_ciphers on; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://localhost:3000; # 포트 포워딩 설정 } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } } } ... (뒷부분 생략) [root@jackerlab nginx]#

위 설정은 중간 location 부분에 1줄 추가가 된 상태고 HTTPS(443) 접속 시, 프록시 기능으로 3000 포트로 포워딩을 하겠다는 설정입니다.

최종적으로 설정 된 결과는 아래와 같고 HTTPS(443) 과 인증서 적용(자물쇠)이 정상적으로 된 후, React(3000) 웹 서비스로 정상 접속된 것을 확인할 수 있습니다.

 

 

 

 

https://jackerlab.com/nginx-redirect-port-forwarding/

 

[Nginx] Nginx HTTP redirect 및 포트포워딩(Port Forwarding) 설정⋆ JackerLab

Nginx 에서 HTTP 프로토콜에 대하여 HTTPS로 redirect 설정하는 것과 다른 포트로 포트포워딩(Port Forwarding) 하는 설정 내용을 정리합니다.

jackerlab.com