워드프레스를 Docker와 Cloudflare Tunnel로 운영하다 보면 주소창에 :8888 같은 포트 번호가 계속 붙어 나오는 경우가 있습니다. 이 문제를 해결하면 애드센스 승인용 도메인처럼 깔끔한 HTTPS 주소를 만들 수 있고, 외부 공개 시에도 훨씬 안정적인 구조를 유지할 수 있습니다.

이 글에서는 Cloudflare Tunnel로 워드프레스 주소창의 포트 번호를 완벽하게 제거하는 방법을 실제 서버 환경 기준으로 정리합니다. 단순히 터널만 연결하는 것이 아니라 wp-config.php와 DB 값까지 함께 맞춰야 하는 이유도 함께 설명합니다.

왜 워드프레스 주소에 포트 번호가 붙을까
워드프레스는 현재 접속한 주소를 기준으로 내부 URL을 판단합니다. 즉, 서버가 http://localhost:8888 같은 포트 기반 주소로 서비스되고 있으면, 워드프레스는 그 정보를 기억한 채 외부에서도 같은 형태를 유지하려고 합니다.
문제는 Cloudflare Tunnel을 붙인 뒤에도 아래처럼 이전 설정이 남아 있으면입니다.
siteurl과home값이 포트 포함 주소로 저장됨wp-config.php에 도메인 고정이 안 되어 있음- 프록시 환경에서 HTTPS 정보를 제대로 인식하지 못함
결과적으로 겉으로는 도메인 접속처럼 보여도, 워드프레스 내부에서는 여전히 :8888을 기준으로 링크를 만들어 버립니다.
기술 환경 먼저 정리하기
이 글의 예시는 아래 환경을 기준으로 합니다.
- 운영체제: Ubuntu Server
- 구성 방식: Docker
wp-appwp-nginxwp-mariadb- 외부 연결: Cloudflare Tunnel(
cloudflared)
이 조합에서는 웹 요청이 보통 Cloudflare → Tunnel → Nginx → WordPress 순서로 전달됩니다. 따라서 주소 문제를 해결하려면 단순히 터널만 연결하는 것으로 끝나지 않고, 워드프레스가 “지금은 외부 HTTPS 도메인으로 서비스 중”이라고 정확히 인식하도록 맞춰줘야 합니다.
Cloudflare Tunnel 설정 핵심
가장 먼저 Cloudflare Zero Trust 대시보드에서 터널을 생성합니다. Linux 환경이라면 보통 Debian 계열 64-bit 기준으로 cloudflared를 설치하고 서비스로 등록하면 됩니다.
설치 후에는 터널 상태가 연결됨으로 표시되어야 합니다. 여기까지 확인되면 Public Hostname을 설정할 수 있습니다.
중요한 포인트는 다음입니다.
- Subdomain은 비워둘 수 있음
- Service는
http://localhost:8888로 지정 - 외부에 노출할 실제 주소는 Cloudflare가 담당
- 내부 서비스는 기존 포트로 유지 가능
이 단계만으로는 주소창의 포트 번호가 완전히 사라지지 않을 수 있습니다. 하지만 터널의 역할은 “외부에서 들어오는 트래픽을 안전하게 내부 서비스로 전달하는 것”이므로, 이후 워드프레스 내부 설정을 같이 맞춰야 합니다.
wp-config.php 수정이 가장 중요한 이유
Cloudflare Tunnel을 붙였는데도 워드프레스가 계속 포트 번호를 덧붙인다면, 가장 먼저 의심할 부분은 wp-config.php입니다. 워드프레스는 이 파일에서 사이트의 기본 주소를 강제할 수 있기 때문에, 외부 도메인을 명확하게 지정해 주는 것이 좋습니다.
파일 최상단에 아래 코드를 추가합니다.
define('WP_HOME', 'https://kitae104.xyz');
define('WP_SITEURL', 'https://kitae104.xyz');
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
이 설정이 필요한 이유는 다음과 같습니다.
1. WP_HOME과 WP_SITEURL이 사이트 주소를 고정합니다. 2. 워드프레스가 내부 포트 주소 대신 외부 도메인을 우선 사용합니다. 3. HTTP_X_FORWARDED_PROTO를 확인해 HTTPS 요청을 정확히 처리합니다.
특히 Cloudflare Tunnel 환경에서는 실제 웹서버가 직접 HTTPS를 종료하지 않을 수 있으므로, 프록시 뒤에서 전달되는 프로토콜 정보를 워드프레스가 올바르게 읽는 것이 중요합니다.
DB에 남아 있는 예전 주소까지 정리하기
wp-config.php를 수정했는데도 여전히 포트 번호가 따라붙는다면 DB에 이전 주소가 남아 있을 가능성이 큽니다. 워드프레스는 wp_options 테이블의 siteurl과 home 값을 계속 참고하므로, 여기까지 함께 갱신해야 완전히 정리됩니다.
Docker 환경에서는 아래처럼 MariaDB 컨테이너 내부에서 직접 업데이트할 수 있습니다.
sudo docker exec -i wp-mariadb mariadb -u [ID] -p[PW] [DB명] -e "UPDATE wp_options SET option_value = 'https://kitae104.xyz' WHERE option_name IN ('siteurl', 'home');"
이 작업의 의미는 간단합니다.
- DB 안에 저장된 사이트 주소를 새 도메인으로 변경
- 워드프레스 관리자 화면과 실제 접속 주소를 일치시킴
- 포트 포함 URL이 자동 생성되는 현상을 줄임
DB 수정 후에는 캐시나 브라우저 기록 때문에 예전 주소가 보일 수 있으니, 실제 반영 여부는 시크릿 창이나 다른 브라우저로 확인하는 것이 좋습니다.
실무 적용 방법
실제로 적용할 때는 아래 순서대로 진행하면 혼란이 적습니다.
1. Cloudflare Zero Trust에서 Tunnel 생성 2. cloudflared 설치 및 서비스 등록 3. Public Hostname의 Service를 http://localhost:8888로 지정 4. wp-config.php에 도메인 고정 코드 추가 5. MariaDB의 siteurl, home 값 수정 6. 워드프레스 컨테이너 재시작 7. 브라우저에서 HTTPS 도메인 접속 확인
재시작 명령은 다음처럼 실행하면 됩니다.
sudo docker restart wp-app wp-nginx
이 과정이 끝나면 워드프레스가 내부 포트가 아닌 외부 도메인을 기준으로 동작하기 시작합니다. 결국 핵심은 Cloudflare Tunnel 자체가 아니라, 워드프레스 내부 설정과 DB 값을 외부 공개 구조에 맞게 정렬하는 데 있습니다.
체크리스트
아래 항목을 하나씩 점검하면 문제 원인을 빠르게 찾을 수 있습니다.
- Cloudflare Tunnel 상태가 연결됨인지 확인했는가
- Public Hostname의 Service가
http://localhost:8888로 설정되었는가 wp-config.php상단에WP_HOME,WP_SITEURL이 들어갔는가HTTP_X_FORWARDED_PROTO를 처리하고 있는가- DB의
siteurl,home값이 새 도메인으로 바뀌었는가 wp-app,wp-nginx컨테이너를 재시작했는가- 브라우저 캐시 또는 워드프레스 캐시가 남아 있지 않은가
- 관리자 화면과 실제 공개 주소가 완전히 일치하는가
이 체크리스트를 기준으로 보면, 포트 번호가 남는 이유를 “터널 문제”로만 오해하지 않게 됩니다. 실제 원인은 대부분 워드프레스 내부 URL 설정과 DB 값의 불일치입니다.
주의할 점
Cloudflare Tunnel로 워드프레스를 공개할 때는 몇 가지 함정을 조심해야 합니다.
1) 터널만 바꿔서는 해결되지 않을 수 있음
외부 접속 경로가 바뀌어도 워드프레스 내부 설정이 그대로면 포트가 계속 붙습니다. 즉, 터널 설정은 시작일 뿐이고 주소 고정은 별도로 해야 합니다.
2) DB와 설정 파일을 같이 봐야 함
wp-config.php만 바꾸고 끝내면 잠시 좋아 보이다가 다시 예전 주소가 나타날 수 있습니다. 반대로 DB만 수정해도 설정 파일이 덮어쓰면 같은 문제가 반복됩니다.
3) HTTPS 인식이 꼬일 수 있음
프록시 뒤에서 운영할 때는 워드프레스가 요청을 HTTP로 오해할 수 있습니다. 이 경우 로그인 리다이렉트, 관리자 화면 경고, mixed content 문제까지 이어질 수 있으니 HTTP_X_FORWARDED_PROTO 처리도 함께 확인하세요.
4) 캐시 때문에 반영이 늦어 보일 수 있음
브라우저 캐시, 워드프레스 캐시, Cloudflare 캐시가 겹치면 수정 후에도 이전 주소가 남아 보일 수 있습니다. 검증은 시크릿 창이나 캐시 삭제 후 진행하는 편이 안전합니다.
자주 묻는 질문
Q1. Cloudflare Tunnel만 설치하면 포트 번호가 자동으로 없어지나요?
아니요. Tunnel은 외부 연결 경로를 제공할 뿐입니다. 워드프레스가 내부에서 기억하고 있는 siteurl, home, WP_HOME, WP_SITEURL까지 함께 바꿔야 주소창의 포트 번호가 사라집니다.
Q2. wp-config.php와 DB 중 어느 것을 먼저 수정해야 하나요?
보통은 wp-config.php부터 수정하고, 그 다음 DB의 siteurl과 home을 맞추는 순서가 좋습니다. 설정 파일로 사이트 주소를 고정한 뒤 DB까지 정리하면 재발 가능성이 줄어듭니다.
Q3. 포트를 제거했는데 관리자 페이지가 자꾸 로그인 풀림 현상을 보입니다. 왜 그런가요?
대부분 HTTPS 인식이 제대로 되지 않거나 도메인 값이 서로 맞지 않을 때 발생합니다. HTTP_X_FORWARDED_PROTO 처리 여부와 WP_HOME, WP_SITEURL 값이 동일한지 확인해야 합니다.
Q4. Docker 환경에서 꼭 컨테이너를 재시작해야 하나요?
권장합니다. 설정 파일과 DB를 바꿔도 실행 중인 컨테이너가 이전 캐시나 설정을 유지할 수 있기 때문입니다. wp-app, wp-nginx를 재시작한 뒤 결과를 확인하는 편이 안정적입니다.
마무리
Cloudflare Tunnel로 워드프레스 주소창의 포트 번호를 없애려면, 단순히 외부 접속만 연결해서는 부족합니다. 터널 설정, wp-config.php 고정, DB 주소 수정, 컨테이너 재시작까지 순서대로 맞춰야 비로소 완벽하게 정리됩니다.
특히 애드센스 승인처럼 깨끗한 도메인 형태가 중요한 경우에는 https://도메인만 남기고 포트 번호를 제거하는 작업이 사실상 필수입니다. 한 번 구조를 제대로 잡아두면 이후에는 워드프레스를 더 안정적으로 운영할 수 있습니다.
| 항목 | 정리 |
|---|---|
| 핵심 문제 | 워드프레스가 예전 포트 주소를 계속 기억함 |
| 가장 먼저 볼 곳 | Cloudflare Tunnel Public Hostname 설정 |
| 필수 수정 파일 | wp-config.php |
| DB에서 확인할 값 | siteurl, home |
| 최종 확인 방법 | wp-app, wp-nginx 재시작 후 HTTPS 도메인 접속 |

저는 대학에서 컴퓨터 관련 학과 학생들을 가르치고 있는 교수 김기태입니다. Spring Boot, React, Python 등을 활용한 풀스택 웹 개발과 최신 AI 서비스 설계를 주로 다루고 있으며, 학생들이 현업 실무에 바로 적용할 수 있는 기술 역량을 키울 수 있도록 강의와 실습을 설계하고 있습니다.


