NGINX 접속하기 - 포트포워딩

알파로그·2023년 4월 17일
0

Linux 와 Docker

목록 보기
6/28

✏️ Docker network

  • Docker 가 실행중인 NGINX 에 접속하기 위해서 NGINX 가 어떤 위치에 존재하고 있는지 알아야 할 필요가 있다.
-- 기본 OS --
-- UTM --
-- Cent OS --
-- Docker --
 NGINX 실행중

✏️ NGINX 웹페이지 접속하기

📍 NGINX 실행

  • 도커 내부에서 실행 시켜야한다.
    • 데몬 옵션 추가
    • name 변경
    • 종료시 자동삭제 옵션 추가
docker run -d --name=nginx_1 --rm nginx

📍 iproute2 설치

  • nginx 에 접속하기 위해선 해당 웹의 ip 를 알아야 하는데 docker 에 의해 설치된 nginx 는 실행할 수 있을정도의 프로그램만 설치되기 때문에 ip 를 조회하는 기능이 없다.
  • 아래 명령어로 ip 를 조회하는 프로그램을 설치해주어야 한다.
apt-get update
apt-get install iproute2

📍 ip 확인

  • 아마 172.17.0.2 일거다.
ip addr
  • ip 를 확인했으면 아래 명령어로 빠저나오면 된다.
exit
  • 핑으로 찾아낸 ip 가 확실한지 확인해준다.
ping 172.17.0.2

📍 접속

  • 아래 명령어로 접속했을 때 html 소스가 나오면 성공
curl http://172.17.0.2:80/
  • 참고로 ip 주소만 입력해도 작동된다.
curl 172.17.0.2

✏️ 포트포워딩

  • 기본 OS 의 Chrom 에서 CentOS 의 81 번 포트로 받은 것을 NGINX 의 ip 로 포트포워드 하는것을 뜻한다.
    • 즉 기본OS 에서 리눅스 안의 도커가 실행중인 웹서버에 접속하는 것을 뜻한다.

📍 nginx 의 정보 상세확인

  • fgrep 을 사용해 ip 정보만 지정해서 확인할 수 있다.
    • 이렇게 획득한 ip 는 리눅스에선 잘 접속되지만 기본 OS 의 웹에선 접속되지 않는다.
    • 기본 OS 에서는 리눅스 까지만 접속이 가능하기 때문에 이 상태로는 접속이 불가능하다.
docker inspect nginx_1 | fgrep IPAddress

📍 nginx 종료

  • 현재실행중인 nginx 를 중지한다.
    • run 할 때 추가한 옵션때문에 자동 삭제된다.
docker stop nginx_1

📍 nginx 포트포워딩 적용해서 다시 실행

  • 다시 포트포워딩 옵션을 추가해 nginx 를 run 해준다.
    • 81 포트 (리눅스의 ip) 로 접속이 확인되면 80포트 (docker 의 ip) 로 포워딩하는 명령어
docker run -d --name=nginx_1 --rm -p 81:80 nginx

📍 81 포트로 접속

  • 이제 리눅스 ip 의 81 포트로 접속하면 도커에서 실행중인 nginx 에 접근이 가능하게 된다.
    • 아래의 ip 를 url 에 입력하면 된다.
    • 만약 포트번호를 생략하면 자동으로 80 포트로 접근되고,
      리눅스가 실행했던 enginx 가 실행된다.
192.168.64.2:81

✏️ 포트 변경하기

  • 81 포트를 80 포트로 바꿀 수도 있다.
    • 하지만 이미 리눅스에서 80 포트를 사용하고있다면 하나의 포트에서 두개의 프로그램이 실행될 수 없기때문에 사용이 불가능하다.
  • 80 포트가 사용중일 때 80포트로 포트포워딩을 하면 오류가 발생한다.
root@localhost ~]# docker run -d --name=nginx_1 --rm -p 80:80 nginx

3c5bf4757c9fd910d37a73b8fc4006faf607578a678dc21228a986ed4296fdf6
docker: Error response from daemon: driver failed programming external connectivity on endpoint nginx_1 (0670cec3466bfbf38fa91ca6ec8329e8f79b7f43f77ab6308d4a72fed3ba6c73): Error starting userland proxy: listen tcp4 0

📍 사용중인 80 포트 종료하기

  • 현재 80포트는 리눅스에서 실행된 nginx 가 실행되고 있다.
    • 리눅스의 nginx 를 종료
systemctl stop nginx
  • 다시 80 포트로 포트포워딩을 하면 정상적으로 docker 의 nginx 가 실행된다.
docker run -d --name=nginx_1 --rm -p 80:80 nginx
profile
잘못된 내용 PR 환영

0개의 댓글