Nginx虚拟主机加载错误的站点

时间:2016-12-20 06:29:55

标签: wordpress nginx virtualhost vhosts

我有三个域的Nginx。

这些网站按字母顺序分别为 d.com g.com m.com

这三个站点都是单站点WordPress安装。

g.com 是带有letsencrypt证书的https,并按预期加载。

m.com 不是https并按预期加载

d.com 加载 m.com 而不是自己的文件夹。

我现在已经搜索和阅读了两个星期,我无法理清我做错了什么。

新信息

我发现这个DNS仍然在我的旧主机(mt),它正确指向这里,但我决定将它移动到新主机(linode)。

现在如果我使用www.d.com,我会从正确的文件夹中获得正确的网站加载。但是,如果我放弃www并使用d.com,我会被重定向到www.m.com作为完全重定向。

/etc/nginx/nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        client_max_body_size 150M;

        # server_tokens off;
        server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        #fastcgi
        fastcgi_buffers 8 16k;
        fastcgi_buffer_size 32k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        # /snippits/ssl-params.conf
        ##

        #ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        #ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        # Logs set in server blocks
        ##
        error_log /var/log/nginx/http_error.log error;

        ##
        # Gzip Settings
        # /conf.d/gzip.conf
        ##

        ##
        # Virtual Host Configs
        ##

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

#mail {
#       # See sample authentication script at:
#       # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#       # auth_http localhost/auth.php;
#       # pop3_capabilities "TOP" "USER";
#       # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#       server {
#               listen     localhost:110;
#               protocol   pop3;
#               proxy      on;
#       }
#
#       server {
#               listen     localhost:143;
#               protocol   imap;
#               proxy      on;
#       }
#}

/etc/nginx/sites-available/d.com

server {
        listen 80;
        listen [::]:80;

        server_name d.com www.d.com;

        include snippets/expires-headers.conf;

        root /var/www/html/d.com/public_html;

        index index.php;

        access_log /var/log/nginx/d.com/www-access.log;
        error_log /var/log/nginx/d.com/www-error.log error;

        location = /favicon.ico {
                log_not_found off;
                access_log off;
        }

        location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }

        location / {
                try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_intercept_errors on;
                include fastcgi_params;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                fastcgi_param SCRIPT_FILENAME /var/www/html/d.com/public_html$fastcgi_script_name;
        }

        location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
                expires max;
                log_not_found off;
        }
}

/etc/nginx/sites-available/g.com

server {
        listen 80;
        listen [::]:80;

        server_name g.com www.g.com;

    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    ssl_certificate /var/lib/acme/live/g.com/fullchain;
    ssl_certificate_key /var/lib/acme/live/g.com/privkey;

    include snippets/ssl-params.conf;
    include snippets/expires-headers.conf;

    server_name g.com www.g.com;

        root /var/www/html/g.com/public_html;
        index index.html index.php;

    access_log /var/log/nginx/g.com/www-access.log;
    error_log /var/log/nginx/g.com/www-error.log error;

    location /.well-known/acme-challenge/ {
        alias /var/run/acme/acme-challenge/;
    }

        location / {
                try_files $uri $uri/ =404;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                include fastcgi_params;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                fastcgi_param SCRIPT_FILENAME /var/www/html/g.com/public_html$fastcgi_script_name;
        }
}

/etc/nginx/sites-available/m.com

server {
    listen 80;
    listen [::]:80;

    server_name m.com www.m.com;

    include snippets/expires-headers.conf;

    root /var/www/html/m.com/public_html;

    index index.php;

    access_log /var/log/nginx/m.com/www-access.log;
    error_log /var/log/nginx/m.com/www-error.log error;

    location = /favicon.ico {
            log_not_found off;
            access_log off;
    }

    location = /robots.txt {
            allow all;
            log_not_found off;
            access_log off;
    }

    location / {
            try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_intercept_errors on;
            include fastcgi_params;
            fastcgi_pass unix:/run/php/php7.0-fpm.sock;
            fastcgi_param SCRIPT_FILENAME /var/www/html/m.com/public_html$fastcgi_script_name;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
            expires max;
            log_not_found off;
    }
}

2 个答案:

答案 0 :(得分:1)

您的配置似乎没有任何问题,但我怀疑您是通过从m.com复制/粘贴配置来创建d.com的配置并在进行任何更改之前保存文件然后重新启动NGINX或在对d.com配置进行修改之前重新加载其配置,这基本上意味着NGINX没有加载您当前的配置。

您可以重新加载配置。在Ubuntu / Debian上是这样的:

sudo service nginx reload

您还应该重新检查并确保/var/www/html/d.com/public_html/var/www/html/m.com/public_html确实提供不同的内容。

答案 1 :(得分:0)

将DNS区域文件从Media Temple移至Linode后,http://www.d.com开始从正确的文件夹加载WordPress安装,但http://d.com没有。

我尝试了另一个浏览器,发现在其他浏览器中两个都正在运行。

我不明白为什么移动DNS区域文件在这里工作。