Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix Now×
Skip to content
World desk11 min

How to Run Ghost on a Subdomain: Self-Hosted and Ghost(Pro) Setup

A practical guide to running Ghost on a subdomain: choose self-hosting or Ghost(Pro), point DNS correctly, configure the HTTPS production URL, avoid reverse-proxy redirect loops and verify every path.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

To run Ghost at a subdomain such as blog.example.com, point that host in DNS to your Ghost server or Ghost(Pro) site, set Ghost’s production URL to the complete HTTPS address, and make sure the reverse proxy preserves the host and reports HTTPS with X-Forwarded-Proto: https. A self-hosted production install can use Ghost-CLI to configure Ghost, MySQL, NGINX, systemd and TLS; Ghost(Pro) handles the server and automatically issues a certificate for an approved custom domain.

What a Ghost subdomain setup actually involves

A subdomain is a separate hostname below your main domain. In this example, example.com is the parent domain and blog.example.com is the hostname visitors use for the publication. Ghost does not become available merely because the DNS name exists. Four layers must agree:

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • DNS: the blog host must resolve to the machine or provider that serves Ghost.
  • Ghost’s URL: the production configuration must use the full canonical address, such as https://blog.example.com, not just the parent domain or a bare hostname.
  • HTTP routing: NGINX, Apache or a managed provider proxy must send requests for that host to Ghost and preserve the original host and protocol.
  • TLS: HTTPS must cover the subdomain, and ordinary HTTP requests should be redirected to the HTTPS version.

Ghost’s configuration guidance treats the publication URL as a required production setting, recommends SSL, and expects requests to arrive through a web server such as NGINX or Apache. Using one canonical HTTPS URL prevents links, cookies, assets and administrator requests from splitting across multiple hostnames.

Choose self-hosting or Ghost(Pro) first

The DNS name can look identical to readers, but the operational work is different. Decide who will operate the server, proxy and certificate before creating records.

Concern Self-hosted Ghost Ghost(Pro)
Server maintenance You administer the server, Ghost installation and the surrounding services. The hosting provider operates the Ghost infrastructure.
NGINX and proxy control You control the web-server configuration, routing and forwarded headers. You use the provider’s custom-domain and proxy process; its host and forwarding requirements still have to be met.
TLS You enable a certificate for the subdomain. Ghost-CLI can automate SSL setup during a production install. A custom domain receives an SSL certificate automatically after it is configured with the service.
Upgrades and recovery You are responsible for updates, service health, backups and recovery procedures. The provider takes responsibility for the managed platform; you still manage domain ownership and publication settings.
DNS and proxy complexity You create a record to your server and ensure the proxy routes the host correctly. You create the record requested by the provider and complete its domain-verification flow.
Recurring cost Server, domain and any separate certificate or operational services; the supplied official material does not establish a current comparable price. A recurring managed-hosting charge; the supplied official material does not establish a current comparable price.

Choose self-hosting when you need control of NGINX, the operating system or the TLS termination point and are prepared to maintain them. Choose Ghost(Pro) when you want the provider to run the application stack and certificate workflow. Do not mix the procedures: a Ghost-CLI install is for a server you control, while Ghost(Pro) uses its custom-domain settings.

Prepare the domain and deployment

Collect the values you will enter

  • The exact subdomain label, for example blog.
  • The complete public hostname, for example blog.example.com.
  • The destination supplied by your server or managed provider.
  • Administrative access to the DNS zone for example.com.
  • For self-hosting, access to the server and permission to install Ghost-CLI and configure its web services.

Use a hostname you can keep permanently. Changing the production URL later affects canonical links, media URLs, integrations and the administrator address.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Decide where TLS will terminate

In a straightforward self-hosted installation, NGINX on the Ghost server receives HTTPS and forwards the request locally to Ghost. In another design, an external reverse proxy or load balancer terminates TLS and proxies to the server. Both designs work, but the latter must explicitly tell Ghost that the original request was HTTPS. If it reports HTTP instead, Ghost can redirect to HTTPS repeatedly.

Create the DNS record

  1. Open the DNS zone for the parent domain.
  2. Create the host named blog (or your chosen label).
  3. Point that host to the self-hosted server’s address, or to the target specified by Ghost(Pro).
  4. Save the record and allow DNS caches time to update.

The record type depends on the destination your provider gives you. A server deployment commonly uses an address record; a managed service may provide a target hostname. Follow the target exactly rather than pointing the subdomain at the parent domain by assumption.

Check resolution from more than one network before troubleshooting Ghost itself. If the name still resolves to an old server, a parking page or no address, web-server changes cannot fix the problem. DNS changes can appear at different times because resolvers cache previous answers.

Install Ghost on your own server with Ghost-CLI

Ghost-CLI is Ghost’s installation and configuration tool. Ghost describes it as “a fully loaded tool for installation and configuration.” In a production installation it can set up the application’s MySQL database, NGINX routing, systemd service and SSL workflow instead of requiring each component to be assembled manually.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Run the production installation

  1. Connect to the server account intended to run the publication and choose the directory where Ghost will live.
  2. Run the Ghost-CLI production installation command, ghost install, from that directory.
  3. When the installer asks for the publication URL, enter the complete canonical address, including scheme: https://blog.example.com.
  4. Provide the database and administrator details requested by the installer. Use credentials that are unique to this publication.
  5. Allow the installer to configure the production process, NGINX and service management when those prompts are offered.
  6. Complete the SSL step so the subdomain has a valid certificate and HTTP can be redirected to HTTPS.
  7. Open the home page and the administration path at https://blog.example.com/ghost/ to confirm that the installation is reachable.

The important value is the URL prompt. Entering example.com, an IP address or an HTTP URL creates a mismatch between the address readers use and the address Ghost considers canonical. Correct the URL before publishing rather than trying to repair every generated link later.

What the automated stack should provide

  • NGINX: accepts requests for the subdomain and routes them to Ghost.
  • MySQL: stores the publication data used by the production instance.
  • systemd: keeps the Ghost process managed as a service.
  • SSL: supplies HTTPS for the configured hostname when the certificate step succeeds.

If a prompt is skipped or an existing server configuration conflicts with the installer, inspect which layer failed instead of repeatedly reinstalling. A running Ghost process cannot compensate for a DNS record aimed at the wrong machine, and a valid certificate cannot compensate for a proxy that sends the request to another site.

Configure a reverse proxy correctly

Ghost normally sits behind NGINX or another web server. The proxy must match the requested host, forward traffic to the Ghost service, and preserve the fact that the visitor used HTTPS.

Preserve the host and protocol

Forward the original host so Ghost generates links for blog.example.com. When TLS terminates before the request reaches Ghost, send:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
X-Forwarded-Proto: https

Also ensure the proxy passes the requested host rather than substituting an internal name. Ghost’s reverse-proxy guidance warns that an incorrect forwarded-protocol value makes Ghost believe a secure request is insecure; it then redirects to HTTPS and can create an infinite redirect loop.

Use one HTTP-to-HTTPS policy

Serve the canonical HTTPS URL and redirect plain HTTP to it. Do not create one redirect in an outer proxy and a conflicting rule in NGINX that points to a different hostname. The desired path is:

  1. A visitor requests http://blog.example.com.
  2. The edge web server returns a redirect to https://blog.example.com.
  3. The HTTPS request reaches Ghost with the correct host and X-Forwarded-Proto: https.
  4. Ghost serves the page without issuing another scheme change.

If your provider offers a proxy configuration screen instead of editable NGINX files, look for settings named custom domain, origin host, forwarded protocol, preserve host or force HTTPS. The labels vary, but the requirements do not.

Enable and verify TLS

Ghost’s official configuration guidance says, “We always recommend using SSL to run your Ghost publication in production.” Treat HTTPS as part of the deployment, not a cosmetic option. The certificate must include the exact subdomain; a certificate for only example.com does not automatically cover blog.example.com.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Self-hosted certificate workflow

  • Run the Ghost-CLI SSL step after DNS points at the server, so certificate validation reaches the correct host.
  • Confirm the certificate’s hostname is blog.example.com.
  • Confirm NGINX listens for HTTPS and redirects the HTTP listener to the same canonical HTTPS host.
  • Renew the certificate through the mechanism selected during installation and monitor expiry.

Ghost(Pro) certificate workflow

Ghost(Pro) custom domains receive an SSL certificate automatically after the domain is connected. You still need to create the required DNS record and wait for the provider to recognize it. Ghost(Pro) reverse-proxy rules require HTTPS, an HTTP-to-HTTPS redirect and correctly matched host and forwarding headers; a certificate being issued does not excuse a host mismatch.

Connect a custom subdomain on Ghost(Pro)

  1. In the Ghost(Pro) administration or hosting dashboard, start the custom-domain connection flow.
  2. Enter the complete hostname, such as blog.example.com.
  3. Create the DNS record pointing the subdomain to the target shown by Ghost(Pro).
  4. Wait for the service to verify the record and provision SSL.
  5. Make the connected HTTPS hostname the publication’s canonical URL in the provider’s settings.
  6. Test both the home page and /ghost/ after the status changes to active.

Do not point the record at an unrelated server first and expect Ghost(Pro) to proxy it. The provider’s target and verification process establish where traffic belongs.

Verify every user-facing path

Run these checks from a normal browser and, where possible, from a second network:

  • DNS: blog.example.com resolves to the intended server or provider target.
  • HTTPS: the browser shows a valid certificate for the exact subdomain.
  • HTTP redirect: http://blog.example.com ends at the HTTPS hostname, not an IP address or parent domain.
  • Home page: the publication loads without mixed-content or missing-asset errors.
  • Administration: https://blog.example.com/ghost/ loads and accepts login.
  • Assets: CSS, JavaScript and images use the same canonical host.
  • Publishing: upload an image and open the resulting post in a private browser window.
  • Redirect behavior: refresh an HTTPS page and confirm it does not bounce between HTTP and HTTPS.

Testing an image upload matters because an incorrect production URL often appears first in generated media links even when the home page seems normal.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot by symptom

The subdomain shows no site or the wrong site

Check the DNS record’s name and destination first. Confirm that the record was created in the authoritative zone, not a similarly named domain, and that the server receiving traffic is the one where Ghost is installed. On a shared server, verify that NGINX has a host rule for the exact subdomain.

There is an infinite redirect loop

The usual cause in a TLS-terminating proxy setup is a missing or incorrect X-Forwarded-Proto: https. Ghost sees an HTTP request behind the proxy, redirects to HTTPS, receives the same apparent HTTP request again and repeats. Correct the forwarded protocol and ensure the proxy preserves the host. Also remove competing HTTP-to-HTTPS rules that redirect to different hostnames.

Best Value
Sale
Lifewit Chilled Condiment Caddy with Stainless Steel Spoons & Tongs, 2 Pcs
  • Ultimate Freshness & Flavor: The condiment caddy’s lower compartment ingeniously holds ice cubes or crushed ice, actively keeping vegetables, sauces, or fruits succulent and fresh for hours. Each top compartment features a removable lid for easy access
  • Safe, Stylish & Complete with Accessories: Crafted from sturdy, BPA-free PET plastic, our condiment organizer offers food safety and elegant aesthetics. The set includes 2 metal clips and 5 metal spoons for grabbing and scooping fruits, vegetables, and sauces. The crystal-clear design provides a seamless view of contents, perfect for beautifully presenting fruits, salads, or any treats. (Note: Avoid direct contact with hot food.)
  • Modular Capacity for Every Need: Each individual lidded compartment 5.7"(14.4cm) × 3.8"(9.7cm) × 2.4"(6.2cm) holds 2.5 cups, ideal for single servings. The complete set includes 5 removable compartments fitting perfectly into the main tray 15.7"(40.6cm) × 6.2"(15.8cm) × 5.1"(13cm), offering ample total capacity
  • Effortless Cleaning & Clear View: Constructed from transparent plastic, this garnish tray offers a clear view of stored food and ice. After use, it conveniently rinses clean with water. For thorough hygiene and longevity, HAND WASHING is highly recommended. (Important: Not dishwasher safe.)
  • Versatility for Every Celebration: This fruit tray transforms into your go-to server for family gatherings, picnics, BBQs, and indoor/outdoor parties! Use it as a convenient hot dog/pizza toppings station, stylish bar garnish caddy, vegetable/fruit tray, or a complete taco bar serving set

The certificate is invalid or issued for another name

Verify that DNS reaches the intended endpoint and that the certificate includes the full subdomain. A certificate for the parent domain alone is insufficient. For Ghost(Pro), wait for domain verification and automatic issuance; for self-hosting, rerun the SSL configuration only after the DNS record is correct.

The page loads, but assets or uploads use another hostname

Inspect Ghost’s configured production URL. It must be the complete HTTPS subdomain, not the server address, parent domain or an old staging hostname. Update that setting, then regenerate or republish affected content where necessary. Keep the proxy’s host forwarding aligned with the same value.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

/ghost/ returns a 404 or proxy error

Confirm that the request is reaching the Ghost service rather than a default NGINX site. Check the host match, upstream destination and service status. If the home page works but the administration path does not, look for a proxy location rule that handles only the root path.

Ghost(Pro) remains stuck in domain verification

Recheck the provider’s required record type, host label and target. Remove conflicting records for the same name, allow DNS caches to expire and use the exact hostname entered in the Ghost(Pro) dashboard. Certificate provisioning begins only after the service can verify the domain.

Keep one canonical hostname

Pick one public URL, normally https://blog.example.com, and use it everywhere: Ghost’s production setting, proxy configuration, TLS certificate, navigation links and integrations. If another hostname also reaches the server, redirect it to the canonical URL instead of serving a second copy.

Common alternates include the parent domain, an old subdomain, a temporary server name and the bare IP address. Redirecting them avoids duplicate content and prevents cookies or links from being tied to a non-production host. Do not configure two “canonical” URLs; decide which one appears in search results and generated sharing links.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Operational responsibilities after launch

Self-hosted maintenance

  • Keep the Ghost service, NGINX, MySQL and the operating system monitored and updated.
  • Back up the publication database and uploaded content on a schedule appropriate to your publishing frequency.
  • Monitor disk space, service restarts, certificate expiry and DNS changes.
  • Document the canonical URL and proxy headers so a future migration does not recreate a redirect loop.

These tasks are the trade-off for controlling the server. Ghost-CLI reduces initial configuration work, but it does not transfer ownership of the server’s ongoing reliability to someone else.

Ghost(Pro) maintenance

  • Keep the domain registration and DNS zone under your control.
  • Monitor the custom-domain status in the Ghost(Pro) dashboard.
  • Keep the publication URL consistent if you change DNS providers or add an outer proxy.
  • When placing another proxy in front of Ghost(Pro), preserve HTTPS, the original host and the forwarding headers required by the service.

Security and reliability checklist

  • Use HTTPS as the only published scheme.
  • Use a single canonical subdomain and redirect alternatives.
  • Protect DNS-account and server credentials with separate, strong authentication.
  • Do not expose a database service directly to the public internet when the deployment does not require it.
  • Use unique Ghost administrator and database credentials.
  • Test restoration of backups rather than assuming that a successful backup job is usable.
  • Review proxy changes after every DNS, certificate or hosting migration.
  • Verify that image uploads and administrator links still use the canonical HTTPS host after upgrades.

Which deployment path should you use?

Use self-hosted Ghost when

  • You need direct control over NGINX, TLS termination or the server environment.
  • You can maintain a database, service manager, certificates and backups.
  • You want to place the publication behind your own reverse proxy or infrastructure.

Use Ghost(Pro) when

  • You prefer a managed Ghost platform over server administration.
  • You want automatic SSL for a custom subdomain.
  • You accept the provider’s DNS, proxy and hosting workflow instead of editing the server stack yourself.

In either case, the reliable pattern is the same: DNS points the subdomain to the correct deployment, Ghost is configured with the full HTTPS URL, the proxy preserves host and protocol, TLS is valid for that exact name, and every alternate hostname redirects to one canonical address.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.