Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errorsTo run Ghost at https://example.com/blog/ instead of its own domain, keep Ghost listening on its local port (normally 2368), set Ghost’s public URL to include /blog/, and put an nginx reverse-proxy location in front of it. The proxy must forward the original host, HTTPS scheme, and client address. Configure HTTPS and the HTTP-to-HTTPS redirect at nginx, then test both the slash and no-slash forms of the path. The exact self-hosted subpath procedure should be checked against the current Ghost documentation before production use, because the official self-hosted instructions were not verified here.
Need a server to try this on? Antihost offers Linux VPS plans with NVMe storage, full root access and a 14-day free trial.
What a Ghost subdirectory setup actually does
In a subdirectory deployment, visitors request one public URL while Ghost runs somewhere else. A reader enters https://example.com/blog/; nginx receives that request and proxies it to Ghost on the same server at http://localhost:2368. Ghost generates pages and links as though its public address were the subdirectory URL, while nginx handles the public TLS connection and routes only the selected path to Ghost.
As an Amazon Associate I earn from qualifying purchases.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →This is different from installing Ghost into a filesystem folder beneath another application. The important boundary is the HTTP reverse proxy: the main website keeps serving its existing routes, and a specific nginx location handles /blog. Ghost remains a separate application process.
- Public address: the complete HTTPS URL, including the subdirectory, such as
https://example.com/blog/. - Ghost listener: a local service on port
2368, the default port reported by the community installation material. - Routing layer: nginx maps requests beginning with
/blogto that local service. - Proxy identity: forwarded host, protocol, and client-IP headers tell Ghost what the visitor actually requested.
If any one of these layers disagrees, the symptoms are predictable: links can contain 127.0.0.1:2368, HTTP and HTTPS can bounce in a redirect loop, or the subdirectory can return a 404.
#1 Best Overall
- [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
- [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
- [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
- [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
- [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.
Decide on the public URL before installing
Choose the path and spelling
Pick one canonical path, for example /blog/, and use it consistently in the Ghost URL setting, nginx configuration, bookmarks, and any redirects. A path is case-sensitive in practice across many systems, so do not alternate between /Blog and /blog.
The trailing slash deserves an explicit decision. The public example in the installation guidance uses a slash after the directory: https://domain.tld/subdirectory/. Configure that as the canonical address, but test both /blog and /blog/ after deployment. A redirect from one form to the other is acceptable; a loop is not.
Check ownership of the path
Make sure no existing nginx location already claims /blog. A CMS, static directory, or old proxy rule can win over the Ghost rule and make a correct Ghost installation appear broken. Review the active virtual-host configuration before running an installer that may generate additional nginx files.
Understand the hosting choice
| Choice | What you control | What you must configure | Evidence and limitation |
|---|---|---|---|
| Self-hosted Ghost behind nginx | Server, Ghost process, nginx, TLS, and deployment files | Local listener, public URL, proxy location, forwarded headers, certificates, reloads, and troubleshooting | The subpath procedure below is based mainly on community reports; verify exact commands with current Ghost documentation. |
| Ghost(Pro) subdirectory hosting | Less server infrastructure | Follow the host’s subdirectory setup and domain instructions | Ghost publishes a subdirectory help page for its hosted service; those instructions should not be assumed to be identical to self-hosting. |
Subdomain such as blog.example.com |
Usually a simpler host-level separation | DNS, TLS, and a host-specific proxy or hosting setting | Whether a subdomain or subdirectory is better for search performance is not established by the material available here; choose based on operations and site architecture rather than an unverified SEO promise. |
Prerequisites for a self-hosted deployment
Before changing nginx, have these pieces ready:
- A server on which Ghost is installed or will be installed, with permission to manage its service and nginx.
- A DNS record for the domain that resolves to that server.
- An HTTPS certificate and an nginx virtual host for the domain. The public site should be able to serve HTTPS before the Ghost path is added.
- A decision about the canonical path, such as
/blog/. - A way to inspect the active nginx configuration and Ghost’s service logs if the first request fails.
Keep Ghost bound to its local listener rather than exposing port 2368 directly to the internet. The reverse proxy is the public entry point; the local port is an internal hop.
Install Ghost as a separate local service
Install Ghost on the server using the current Ghost installation method for your operating system. The community material used for this guide reports the default listener as port 2368. Do not assume that a different port is wrong, but record the actual port from your installation and use that same value in nginx.
The installer may offer to create nginx configuration automatically. A forum report notes that generated files can be written as new files and then symlinked into sites-enabled. That can be useful, but it can also obscure an existing virtual-host setup. Inspect the generated and active files instead of blindly replacing a working configuration.
Rank #2
- 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
- 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
- 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
- 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
- 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.
At this stage, verify locally that Ghost responds on its listener. A local request to the server’s loopback address and port should reach Ghost; it does not prove that the public subdirectory is configured yet. If the service is not running locally, nginx cannot repair that failure.
Set Ghost’s public URL to include the subdirectory
Ghost must know the address readers use, not the internal address nginx uses. Set the Ghost URL configuration to the complete HTTPS path, for example:
"url": "https://example.com/blog/"
The exact configuration file and CLI flag depend on the current Ghost version and installation method. A community guide describes setting the configuration URL during setup, but the precise install syntax should be checked in the current Ghost CLI documentation before you run it.
Do not set the public URL to http://localhost:2368, http://127.0.0.1:2368, the bare domain without /blog, or an HTTP address when visitors use HTTPS. Those values can produce absolute links pointing at the loopback port, omit the subdirectory from navigation, or trigger an HTTPS redirect loop.
After changing the setting, restart Ghost using the service method supplied by your installation. The restart command is version- and process-manager-dependent, so use the command shown by your current Ghost setup rather than copying an outdated one.
Create the nginx reverse-proxy location
A minimal illustrative location
The following is an example of the routing pattern reported in forum discussions. It is intentionally presented as a template to adapt and validate against the nginx configuration already serving your domain:
Rank #3
- [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
- [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
- [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
- [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
- [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by
location /blog {
proxy_pass http://localhost:2368;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
The key behavior is the mapping from the public path to Ghost’s local port and the forwarding of the request identity. The supplied community examples use location /blog patterns; whether you choose /blog or /blog/, and whether a trailing slash is added to proxy_pass, affects how nginx constructs the upstream URI. Confirm that behavior with your existing routes and test both public forms. Do not add a path rewrite merely because another example contains one.
Why each forwarded header matters
Hostpreserves the domain the visitor requested.X-Forwarded-Hostexplicitly tells Ghost the public host. The Ghost(Pro) subdirectory guidance calls for this value to match the public domain.X-Forwarded-Prototells Ghost that the original request was HTTPS. The subdirectory guidance specifieshttps; omitting or mis-setting it is a reported cause of redirect loops.X-Forwarded-Forcarries the client address through the proxy chain. Using nginx’s$proxy_add_x_forwarded_forpreserves an existing chain while adding the current client.
If your site supports multiple hostnames, replace the simple $host example with the canonical host policy used by your virtual host. The important requirement is that Ghost receives the same public host that you intend to publish.
Recommended Free Tools
Terminate HTTPS and redirect HTTP
Serve the canonical Ghost URL over HTTPS. Configure the TLS-enabled nginx server block to proxy /blog to Ghost, and configure the port-80 server block to redirect the corresponding HTTP requests to HTTPS. Keep the redirect at the proxy layer so Ghost sees a consistent secure scheme.
Test the redirect separately from the application response. An HTTP request should make one clear move to the HTTPS URL; the HTTPS request should then reach Ghost. If the browser alternates between HTTP and HTTPS, inspect X-Forwarded-Proto, the Ghost public URL, and any additional redirect rules in the main site.
Validate the configuration safely
- Save a copy of the current nginx virtual-host files before editing them.
- Run nginx’s configuration test, commonly
nginx -t(often with elevated privileges). Fix syntax errors before reloading. - Reload nginx using the service command appropriate to your operating system. A reload applies the new configuration without the longer interruption associated with a full stop and start.
- Request
https://example.com/blogandhttps://example.com/blog/in a private browser window or with an HTTP client. - Follow one internal link and inspect its destination. It should remain under the intended public domain and subdirectory, not switch to
localhost,127.0.0.1:2368, an unexpected port, or the root of the domain. - Repeat the test over HTTP and confirm a single redirect to the HTTPS canonical URL.
Keep the response status, final URL, and redirect count for each test. Those three observations distinguish a routing failure from a Ghost URL or scheme problem.
Troubleshoot the common failure modes
Redirect loop between HTTP and HTTPS
A loop usually means Ghost believes the original request was HTTP even though nginx received HTTPS, or the configured public URL is HTTP. Check that the public URL begins with https:// and that nginx sends X-Forwarded-Proto https. Also check that an upstream or second proxy is not overwriting that header. After correcting the values, restart or reload the component whose configuration changed and clear the browser’s cached redirect while testing.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchPC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Rank #4
- Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
- Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
- All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
- Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
- Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.
Links contain the local address or the wrong port
Links showing 127.0.0.1:2368 indicate that Ghost is generating URLs from its internal listener instead of the public address. Set the public URL to the full domain and subdirectory, then restart Ghost. Confirm that nginx’s Host and X-Forwarded-Host identify the public domain.
The subdirectory returns 404
A 404 for Ghost behind nginx is a reported problem, but the retrieved material does not establish one universal fix. Diagnose it without assuming that changing one slash will solve every installation:
- Confirm the Ghost process responds on the local port.
- Confirm the request is entering the intended server block and
location, rather than a static-site or application rule that also matches/blog. - Compare the exact public path, including the trailing slash, with the Ghost public URL.
- Review the effective nginx configuration after reload, not only the file you edited.
- Inspect nginx error logs and Ghost logs at the time of the request.
- Test the root domain’s existing routes to ensure the new location has not displaced them.
Because the community report did not confirm a single remedy, record the failing URL and active configuration before changing path-rewrite or proxy_pass behavior. That makes it possible to reverse an experiment instead of accumulating conflicting rules.
/blog works but /blog/ fails, or the reverse
This points to a path-normalization mismatch. Decide which form is canonical, then make nginx and Ghost agree on it. Test the non-canonical form for a deliberate redirect rather than expecting both forms to be served independently. A slash change in location or proxy_pass can alter the upstream URI, so change one element at a time and rerun the two URL tests.
The main website breaks after adding Ghost
An overly broad location or an installer-generated server block may be catching requests intended for the existing site. Compare the active server blocks, restore the backup if necessary, and narrow the Ghost rule to the chosen subdirectory. Review symlinks in sites-enabled when your distribution uses that layout.
Ghost loads but assets or navigation point elsewhere
This is usually a public-URL mismatch rather than a missing asset file. Check the configured URL for the correct scheme, hostname, and path. Then inspect the generated asset and navigation URLs in the browser and verify that the proxy passes the same forwarded host and protocol on every request.
Best Value
Operating the setup after launch
Keep configuration ownership clear
Document which file owns the domain’s server block, which file owns the Ghost location, and whether either file is generated by the Ghost installer. If an update regenerates nginx files, compare the result with your saved configuration before reloading.
Renew certificates before they expire
The reverse proxy terminates HTTPS, so certificate renewal belongs to the nginx-facing host. After renewal, run the configuration test and reload nginx, then repeat the HTTPS and redirect checks. A valid certificate does not correct a wrong Ghost URL or missing forwarded headers.
Free tools Windows power users keep installed
One-click scans. No signup required.
Monitor both hops
There are two independent health checks: nginx’s public response and Ghost’s local listener. A public 502 or timeout can mean Ghost is stopped even when nginx syntax is valid; a public 404 can mean routing; a redirect loop can mean scheme or host metadata. Check the corresponding logs rather than treating every symptom as an application failure.
Plan changes around the canonical path
Changing from /blog to another path later affects generated URLs, bookmarks, feeds, and links from the rest of your site. Treat the subdirectory as a long-lived public interface. If a move is unavoidable, plan explicit redirects and update Ghost’s public URL and nginx location together.
Subdirectory or subdomain: a practical decision
| Question | Subdirectory (example.com/blog) |
Subdomain (blog.example.com) |
|---|---|---|
| Routing | Requires a path-specific nginx location that coexists with the main site. | Can use a separate host/server block, often reducing path-matching conflicts. |
| Ghost URL | Must include the directory and HTTPS scheme. | Uses the subdomain and HTTPS scheme without a path prefix. |
| Forwarded metadata | Host, forwarded host, protocol, and client address remain essential. | The same proxy metadata is still useful, but there is no subdirectory prefix to normalize. |
| Operational fit | Good when the blog should visibly live within the main site’s URL hierarchy. | Good when you want a cleaner boundary between the blog service and the main site. |
| SEO conclusion | No verified evidence here establishes a universal ranking advantage for either choice. Select the structure your team can configure, monitor, and maintain correctly. | |
A deployment checklist
- DNS resolves the public domain to the nginx server.
- HTTPS works for the domain and the HTTP endpoint redirects to HTTPS.
- Ghost is running locally on the recorded port, normally
2368. - Ghost’s public URL includes the exact domain, HTTPS scheme, and chosen subdirectory.
- The nginx location matches the intended path and does not override unrelated site routes.
proxy_passpoints to the local Ghost listener.Host,X-Forwarded-Host,X-Forwarded-Proto, andX-Forwarded-Forare passed correctly.nginx -tsucceeds before reload.- Both
/blogand/blog/have an intentional, non-looping result. - Generated links stay on the public domain and subdirectory.
- Existing nginx files and symlinks have been reviewed after any installer change.
- Logs are available for both nginx and Ghost before launch.
Frequently asked questions
Can Ghost listen on a non-default port?
Yes, provided nginx proxies to the port Ghost actually uses. Port 2368 is the default reported in the community material; the public URL should still contain the domain and subdirectory, never the internal port.
Do I need to expose port 2368 publicly?
No. The intended pattern is for nginx to accept public traffic and connect to Ghost locally. Leaving the application listener internal reduces an unnecessary public entry point.
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Why are forwarded headers necessary if nginx already proxies the request?
Ghost needs the original host and scheme to generate canonical links and redirects. Without the forwarded host and HTTPS protocol, it may construct internal URLs or repeatedly redirect between schemes.
Is a 404 proof that Ghost is not installed?
No. A 404 can come from the wrong nginx server block, a competing location, a path or trailing-slash mismatch, or Ghost itself. Test the local listener and inspect the active proxy configuration before reinstalling.
Are the exact nginx and Ghost CLI commands universal?
No. Distribution layouts, Ghost versions, process managers, and installer-generated files differ. Use the patterns above as a checklist, and verify exact commands and current subpath behavior against the current Ghost documentation before applying them to production.
Quick Recap
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.

