我一直在尝试建立一个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 中所做的那样。