nginx , Docker를 기반하여 포트포워딩 하는 법

 

IPTIME 설정하기

일단 내부망에 연결된 곳으로 가야하는데 일반적으로 192.168.10.1 이렇게 쓴다.

 

관리 도구로 접속하자

 

 

고급설정 - NAT/라우터관리 - 포트포워딩 설정으로 접속한다.

 

 

여기에 인식할수 있는 이름과

매핑할 C클래스 내부주소를 입력한다.

 

 

다음에 외부에서 들어올 포트를 주고

내가 C클래스 내부주소를 할당받아 포트를 준 내부 포트를 할당해준다

 

예를들어 웹서버는 81

API 서버는 11213으로 내부에서 할당해둔상태다.

EX.) 192.xxx.x.xxx 이런식으로 되어 있는거

할당을 해주면 아래처럼 접속이된다.

외부에서 접속가능한 아이피:할당한포트

이렇게 포트포워딩이 되서 준비가 완료된 상태이다.

스크립트작성

version: '3.8'

services:
  nginx:
    container_name: nginx
    image: nginx
    restart: always
    ports:
      - '81:81'
      - '444:444'
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro  # nginx.conf 파일을 읽기 전용으로 마운트
      - ./html:/usr/share/nginx/html:ro              # html 디렉토리(하위 폴더 포함)를 읽기 전용으로 마운트
    environment:
      - TZ=Asia/Seoul
    networks:
      - server-connection

networks:
  server-connection:
    driver: bridge

예시로 작성해둔 docker-compose 파일인데

여기서 nginx.conf를 매핑해서

worker_processes 1;

events {
    worker_connections 1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       81;
        server_name  localhost;

        location / {
            root   /usr/share/nginx/html;  # html 디렉토리 기준으로 서빙
            index  index.html;
        }

        location /css/ {
            root   /usr/share/nginx/html;
        }

        location /js/ {
            root   /usr/share/nginx/html;
        }

        error_page  500 502 503 504 /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

이렇게 nginx.conf 파일을 만들어준다.

그러면 기존에 80이 기준해서 81로 접속하는 대상에 대해 해당 서비스로

포트포워딩이 되게 된다.

백엔드는 각 상황에 맞춰서 하면되는데

예로 자바 Spring boot라면 properties에서 할당한 포트와

도커컨테이너와 매핑된 docker port를 매핑해서 처리해주면 된다.