Trying to configure a Ghost subdomain; what's wrong here?

Posted May 3, 2015 3.8k views

So, I’ve got nginx up and running just fine, serving the main static site like I want it to. I’ve also got Ghost running just fine; if I plug in my site’s address and append :2368, I can look at the blog right now. Here’s how my zone file looks:

$TTL 1800 IN SOA 1430683439 10800 3600 604800 1800 1800 IN A 1800 IN NS 1800 IN NS 1800 IN NS
* 1800 IN CNAME 1800 IN A

I have one nginx/sites-available file for both the main site and the blog, both of which have symbolic links in the sites-enabled directory. The one for the blog looks like this:

server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;

access_log /var/log/nginx/ghost.log

client_max_body_size 10G;

location / {
    proxy_pass http://localhost:2368;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_buffering off;

It also has a location /doc and location /images section, though those are unedited from the default file provided by nginx.

As for my config.js file, I went ahead and modified the production section:

// ### Production
// When running Ghost in the wild, use the production environment
// Configure your URL and mail settings here
production: {
url: '',
mail: {},
database: {
client: 'sqlite3',
connection: {
filename: path.join(__dirname, '/content/data/ghost.db')
debug: false
server: {
// Host to be passed to node's net.Server#listen()
host: '',
// Port to be passed to node's net.Server#listen(), for iisnode set this to process.env.PORT
port: '2368'

So, what am I doing wrong? Should the blog and main site be contained in a single sites-available file?

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Submit an Answer
1 answer

The Wildcard DNS Entry should be an A entry, not a CNAME.

* 1800 IN CNAME

should be:

* 1800 IN A

The same would apply if you were adding a single sub-domain, without the Wildcard Entry: 1800 IN A

If you’re using DigitalOcean to manage your DNS, then you’d simply enter the following in to the form:

Enter Name: *
Enter IP Address: [DROPLET-IP]

and then click submit. You’ll want to remove the CNAME with the Wildcard.

As an A entry, all attempts to access sub.yourdomain.ext will be sent to yourdomain.ext unless there’s a valid server block defined and included when NGINX (re)starts. This includes www, thus, there’s no real need to have a CNAME for www either (and you don’t, just pointing it out).