sslip.io 접근 불가

흑두루미·2026년 5월 19일

sslip.io 접근 불가

🔍현상

테스트 용도의 https://publicip.sslip.io 접근 시 접근불가


✅확인

  1. 클라우드 방화벽 확인
    HTTPS(443)/HTTP(80) 포트의 0.0.0.0/0 Inbound Allow 확인

  2. sslip.io 도메인 차단 우회

  1. 서버 내 서비스 확인
ubuntu@web-ide:~$ curl -vk https://localhost
* Host localhost:443 was resolved.
* IPv6: ::1
* IPv4: 127.0.0.1
*   Trying [::1]:443...
* connect to ::1 port 443 from ::1 port 52466 failed: Connection refused
*   Trying 127.0.0.1:443...
* connect to 127.0.0.1 port 443 from 127.0.0.1 port 59452 failed: Connection refused
* Failed to connect to localhost port 443 after 2 ms: Couldn't connect to server
* Closing connection
curl: (7) Failed to connect to localhost port 443 after 2 ms: Couldn't connect to server
docker ps
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                                                                                  NAMES
0330a5a4c896   cwj3688/code-server-hol3   "/usr/bin/entrypoint…"   14 minutes ago   Up 14 minutes   0.0.0.0:3000->3000/tcp, [::]:3000->3000/tcp, 0.0.0.0:80->8080/tcp, [::]:80->8080/tcp   code-server-hol3

📝해결

서비스 확인 시 443포트로 오픈되어 있지 않음

  1. docker-compose.yaml 수정으로 Caddyfile 재배포
  • Yaml 수정 전
services:
  code-server:
    image: cwj3688/code-server-hol3
    container_name: code-server-hol3
    restart: always
    ports:
      - "3000:3000"
      - "80:8080"
    volumes:
      - /home/ubuntu/project:/home/coder/project
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/ubuntu/.scp:/home/coder/.scp
      - /home/ubuntu/.scpconf:/home/coder/.scpconf
      - /home/ubuntu/.kube:/home/coder/.kube
      - /home/ubuntu/.config:/home/coder/.config
      - /home/ubuntu/.local:/home/coder/.local

    environment:
      # - PASSWORD=admin12345!!
      - PASSWORD=${PASSWORD}
    command: /home/coder/project
    # command: --auth none /home/coder/project
    group_add:
      # - $(shell getent group docker | cut -d: -f3)
      - ${DOCKER_GID}
  • Yaml 수정 후
    Caddy(HTTPS 프록시) 추가
services:
  code-server:
    image: cwj3688/code-server-hol3
    container_name: code-server-hol3
    restart: always
    ports:
      - "3000:3000"

    volumes:
      - /home/ubuntu/project:/home/coder/project
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/ubuntu/.scp:/home/coder/.scp
      - /home/ubuntu/.scpconf:/home/coder/.scpconf
      - /home/ubuntu/.kube:/home/coder/.kube
      - /home/ubuntu/.config:/home/coder/.config
      - /home/ubuntu/.local:/home/coder/.local
    environment:
      - PASSWORD=${PASSWORD}
    command: /home/coder/project
    group_add:
      - ${DOCKER_GID}

  # 새롭게 추가된 Caddy(HTTPS 프록시) 컨테이너
  caddy:
    image: caddy:alpine
    container_name: caddy-proxy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    command: caddy reverse-proxy --from 123.41.35.83.sslip.io --to http://code-server:8080
    volumes:
      - caddy_data:/data

volumes:
  caddy_data:

  1. 컨테이너 재배포
# 1. 기존 컨테이너 종료
sudo docker compose down

# 2. 비밀번호 및 권한 변수 다시 불러오기
PASSWORD=$(cat /home/ubuntu/project/env-info.txt | grep "Password:" | awk '{print $NF}')
DOCKER_GID=$(getent group docker | cut -d: -f3)

# 3. 새로운 구성(Code-Server + Caddy)으로 띄우기
sudo PASSWORD=$PASSWORD DOCKER_GID=$DOCKER_GID docker compose up -d
  • 비밀번호 및 권한 변수(PASSWORD, DOCKER_GID)를 다시 불러온 이유
    리눅스의 환경 변수는 '휘발성 메모리'와 같음
    특정 터미널 창이나 스크립트가 실행되는 동안에만 존재하고, 창을 닫거나 스크립트가 끝나면 싹 사라짐

  1. Caddy 란?
    Caddy는 Nginx나 Apache와 같은 웹 서버 프로그램
    하지만 다른 웹 서버들과 차별화되는 엄청난 강력한 무기가 하나 있는데,
    바로 자동 HTTPS(SSL 인증서) 발급 기능
  • 리버스 프록시(Reverse Proxy) 역할
    위 내용 '[확인]' 부분 확인 시 Code-Server 컨테이너는 HTTP(8080 포트)로만 통신
    그래서 Caddy가 외부에서 들어오는 HTTPS 요청을 자기가 대신 받아서,
    내부의 Code-Server에게 HTTP로 안전하게 토스

  • 무료 보안 인증서 자동 세팅
    원래 https:// 자물쇠 마크를 띄우려면 인증 기관에 가서 도메인을 증명하고 복잡한 인증서를 발급받아 서버에 세팅해야 함
    하지만 Caddy는 Publicip.sslip.io 라는 주소만 알려주면,
    자기가 알아서 Let's Encrypt 같은 기관과 통신해 무료 보안 인증서를 받아오고 주기적으로 갱신까지 해줌

0개의 댓글