Nginx 在子域名上无法正常工作

Nginx 在子域名上无法正常工作

我一直在尝试建立一个Sugar CRM 实例。我有一个域名,其主站点位于服务器上 (www.domain.com),并且我创建了一个子域名 (sugar.domain.com),但我想要这个子域名托管在另一台服务器上

第二台服务器是否安装了 nginx,并且虚拟主机上有一个可用的 WordPress 博客,所以我需要设置第二个网站。为此,我创建了目录结构,并创建了一个/etc/nginx/sites-enabled/sugar.domain.com配置文件包含以下内容:

*

    server {
                  listen   80;
                  server_name sugar.domain.com *.domain.com;
                  access_log  /var/www/sugar/log/access.log;
                  error_log      /var/www/sugar/log/error.log info;
                  location / {
                      root /var/www/sugar;
                      index index.php;
                  }

    location ~ .php$ {
        fastcgi_split_path_info ^(.+\.php)(.*)$;
        fastcgi_pass   backend;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/sugar/$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  QUERY_STRING     $query_string;
        fastcgi_param  REQUEST_METHOD   $request_method;
        fastcgi_param  CONTENT_TYPE     $content_type;
        fastcgi_param  CONTENT_LENGTH   $content_length;
        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     on;
        fastcgi_read_timeout 180;

    }


    ## Disable viewing .htaccess & .htpassword
    location ~ /\.ht {
        deny  all;
    }
}
upstream backend {
              server 127.0.0.1:9000;

}

据我所知,我需要*.域名.com参数上的“server_name”标志,但这里有些崩溃:我收到 403 Forbidden 错误,或者我收到 PHP 代码(我可以读取 PHP 文件代码在浏览器中,就像普通文本一样),但不知何故却无法执行。我尝试在 /var/www/sugar/ 目录中将权限设置为 755,并且还使用 chown -R www-data:www-data /var/www/sugar/ 设置了所有者:组

问题是,我现在不知道我的错误是在 nginx 站点配置中,还是在我的文件夹权限中,还是在其他地方 :(

是不是因为主域名(www.domain.com)托管在其他服务器上?它们一定要在一起吗?

答案1

我立即看到的第一个错误是 - location 采用正则表达式,您需要转义 . 字符。我建议:

location ~* \.php$ {
}

您不需要 *.domain.com,sugar.domain.com 就足够了。正如 koolhead17 所提到的,请确保将 DNS A 记录设置为 sugar.domain.com 的第二台服务器的 IP;nginx 将使用来自浏览器的“Host”标头并将其与 server_name 进行匹配。

答案2

我可能错了,但你必须从控制面板中添加一个子域名,比如 test.domain.com,并将其映射到 A 记录上,该记录将指向运行 Nginx 的 IP。

在 Nginx.conf 中,您必须将 IP 和子域放在虚拟主机中,就像我们在 Apache 中所做的那样。

相关内容