Nginx总是在domain1.com上为任何已配置的服务器块提供php-fpm站点

时间:2016-06-15 17:23:16

标签: php nginx

我想在我的服务器上提供两个php站点和一个静态站点。最后,我希望能够在此nginx配置中添加更多静态,php或代理网站。

目前,我尝试提供服务

  • domain1.com(php,WordPress)
  • sub.domain1.com(php,phpMyAdmin)
  • domain2.com(静态,纯HTML)

然而对任何域的所有请求总是最终服务于domain1.com 。我已经实施了SSL,希望消除错误提供的网站,但是现在他们已经变成了重定向到https://domain1.com

我还试图实现一个全局删除连接(return 444)在不正确的域上,但这正是它在包上所说的:它只是开始发送空响应sub.domain1.comdomain2.com。不确定我的预期是诚实的。

此外,我已尝试将root指令移至位置块,如domain1.com的配置中所示,但这也无济于事。

此外,我尝试将域放在listen 80;指令中,例如listen domain2.com:80希望使nginx更喜欢这个块而不是domain1.com块。我从Nginx Request Processing Documentation得到了灵感。但是,也没有运气。

我不会称自己为最熟练的nginx用户,但是在托管多个域的不同服务器上,这些域提供来自gunicorn服务器的代理内容,这绝不是问题。因此,我怀疑php相关的配置部分是造成这个问题的原因。

指南我以前设置的vanilla服务器是this DigitalOcean guide。但是,我实际使用的服务器是Amazon EC2 t2.micro实例,在安全组中打开了所有必需的端口。我也在使用Ubuntu 14.04 LTS。 Nginx以root身份运行,工作进程以www-data身份运行。所有权限都设置为domain1.com,而且没有问题。所有域都指向EC2实例的IP地址。

感谢您的帮助!

这是我对每个域的nginx配置。

domain1.com

server {
     listen         80;
     server_name    domain1.com;
     return         301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name domain1.com;


    ssl on;
    ssl_certificate /etc/letsencrypt/live/domain1.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/domain1.com/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;


    index index.php index.html index.htm;
    client_max_body_size 64M;

    location / {
        root /usr/share/nginx/html/domain1.com/public;
        try_files $uri $uri/ =404;
    }


    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        root /usr/share/nginx/html/domain1.com/public;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

sub.domain1.com

server {
    listen         80;
    server_name    sub.domain1.com;
    return         301 https://$server_name$request_uri;
}


server {
    listen 443 ssl;
    server_name sub.domain1.com;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/sub.domain1.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/sub.domain1.com/privkey.pem;
    ssl_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    index index.php index.html index.htm;

    server_name sub.domain1.com;

    client_max_body_size 64M;

    location / {
        try_files $uri $uri/ =404;
        root /var/www/sub.domain1.com;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

domain2.com

server {
    listen 80;
    server_name domain2.com www.domain2.com;

    root /var/www/domain2.com/html;
    index index.html index.htm;


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

0 个答案:

没有答案