I had a WordPress site running inside a single Docker container on an Ubuntu server hosted on Oracle Cloud. This container included both the WordPress application and the Apache web server. The container’s port 80 was mapped to the host’s port 8080, allowing access to the site via http://207.211.xxx.xxx:8080. I owned the domain leeveschou.com and wanted to serve the WordPress site securely over HTTPS using this domain.
Purpose
The goal was to configure a reverse proxy setup so that requests to https://leeveschou.com would be securely routed to the WordPress site running inside the Docker container. I preferred to use Apache, which was running inside the Docker container alongside WordPress. The aim was to:
- Serve the WordPress site on the standard HTTPS port (443) under my domain
- Use SSL certificates I already had
- Avoid exposing the non-standard port 8080 to users
- Ensure smooth, secure access to the WordPress site
Issues Encountered
Redirects to Port 8080
After setting up SSL, accessing https://leeveschou.com resulted in a redirect to https://leeveschou.com:8080/, which was inaccessible externally.
Cause:
WordPress’s Site Address (URL) and WordPress Address (URL) were still set to http://207.211.xxx.xxx:8080, causing WordPress to redirect to that port.
Sequence Diagram of Incorrect Setup
sequenceDiagram participant Client as Browser (leeveschou.com) participant DNS as DNS Server participant Host as Ubuntu Server (207.211.xxx.xxx) participant Docker as Docker Container (Apache + WordPress) Client->>DNS: Resolve leeveschou.com DNS-->>Client: Return 207.211.xxx.xxx Client->>Host: HTTPS request to 207.211.xxx.xxx:443 (Host port 443) Host->>Docker: Forward request to container port 443 Docker->>Client: Respond with 301 Redirect to https://leeveschou.com:8080/ Client->>Host: HTTPS request to 207.211.xxx.xxx:8080 (Host port 8080) Note right of Client: Port 8080 not open or no SSL Host-->>Client: Connection refused or timeout
Solution:
- Updated both URLs in the WordPress admin dashboard to https://leeveschou.com
- Alternatively, updated the URLs directly in the SQLite database used by WordPress
- Ensured Apache inside the container had no redirect rules forcing port 8080
- Restarted Apache and cleared browser cache
Sequence Diagram without Redirect
sequenceDiagram participant Client as Browser (leeveschou.com) participant DNS as DNS Server participant Host as Ubuntu Server (207.211.xxx.xxx) participant Docker as Docker Container (Apache + WordPress) Client->>DNS: Resolve leeveschou.com DNS-->>Client: Return 207.211.xxx.xxx Client->>Host: HTTPS request to 207.211.xxx.xxx:443 (Host port 443) Host->>Docker: Forward request to container port 443 Docker->>Docker: Apache serves WordPress content Docker-->>Client: Respond with 200 OK and HTML content