Question

I have a DigitalOcean VPS running nginx which has two websites on it. The two sites on it are: www.ingledow.co.uk and blog.ingledow.co.uk.

My main (www.) domain is predominantly a static site, but my blog (blog.) subdomain runs on Ghost.

Everything works perfectly apart from that I can access my blog from both www. and blog.. For example, here is a blog post at http://blog.ingledow.co.uk/puma-social-club/, but the same blog post can be seen from http://www.ingledow.co.uk/puma-social-club/.

Another point to note is that if you try to go to http://ingledow.co.uk/puma-social-club/ without the www. or blog. it 404s.

The problem lies in having two sites on the same VPS, but not sure if there's a problem with my nginx configs or whether it's problems with my DNS, or both?

The nginx config files are in /sites-available/ and symlinked to /sites-enabled/

I need to get this fixed because it is causing issues with Google search results and SEO.

Here's my DNS:

DNS

blog.ingledow.co.uk.conf

# blog.ingledow.co.uk running on Ghost

server {
    listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

    root /var/www/ghost;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    server_name blog.ingledow.co.uk;

    location / {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_redirect off;
                proxy_pass http://127.0.0.1:2369;
        client_max_body_size 10m;
                break;
        }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location /phpmyadmin { index index.php; }
}

ingledow.co.uk.conf

# ingledow.co.uk.conf

server {
    listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

    root /var/www/ingledow.co.uk/public_html;
    index index.php index.html index.htm;

    # Make site accessible from http://localhost/
    server_name ingledow.co.uk;

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to index.html
        try_files $uri $uri/ /index.html /index.php;
        # Uncomment to enable naxsi on this location
        # include /etc/nginx/naxsi.rules
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        deny all;
    }

    # Only for nginx-naxsi : process denied requests
    #location /RequestDenied {
        # For example, return an error code
        #return 418;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location /phpmyadmin { index index.php; }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #   deny all;
    #}
}
Était-ce utile?

La solution

Try adding www. to sever_name ingledow.co.uk; in the ingledow.co.uk server block. e.g. :

server_name www.ingledow.co.uk ingledow.co.uk;

If you don't want to site to be accessed without the www. subdomain prefix you should remove it from the server_name.

Another way to do it is to have the server block as is for the blog, and just use a catch all server block for the main static site.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top