这个错误信息表明你的 Nginx 配置在试图执行一个 PHP 脚本时遇到了问题,但是它没有找到请求的文件(即“Primary script unknown”)。这通常是因为 `root` 指令没有正确设置,或者 PHP-FPM 配置不正确。
下面是你的配置和错误信息的一些要点:
1. 你的 Nginx 配置试图通过正则表达式捕获子域名(`subdomain`),并将其用作 `root` 指令的一部分。
2. 出错的请求是针对根路径 `/` 的简单 GET 请求。
3. 错误信息指出 Nginx 无法找到应该执行的脚本。
这里有几点你可以检查和修正:
- 确保你的 `root` 路径正确无误。在你的配置中,如果 `subdomain` 是一个变量,你需要确保它被正确展开。在 Nginx 的配置中,尝试使用 `try_files` 指令来处理这种情况:
```nginx
server {
listen 443 ssl;
server_name ~^(?<subdomain>.+).test.net$;
root /www/
test.net;
index index.php index.html;
location / {
try_files $uri $uri/ /$subdomain/index.php$is_args$args;
}
# 其他 PHP 配置...
}
```
- 使用 `$subdomain` 变量时,请确保它被正确引用。在上面的配置中,我假设你有一个对应每个子域名的目录结构,例如 `/www/
test.net/$subdomain`。
- 确认 PHP-FPM 的配置和路径是正确的。确保 `fastcgi_pass` 指令指向正确的 PHP-FPM 套接字或地址。
- 如果请求的是 `/`,Nginx 会试图查找 `root` 目录下的 `index.php` 或 `index.html`。确保这些文件在你的 `root` 目录中是存在的。
- 检查 PHP-FPM 的错误日志,看看是否有关于脚本路径的更多信息。
以下是完整的 `server` 块配置示例,包括处理 PHP 请求的部分:
```nginx
server {
listen 443 ssl;
server_name ~^(?<subdomain>.+).test.net$;
root /www/
test.net;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/data/php745/var/run/socket;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# 如果你的 PHP-FPM 需要的话,可能还需要 fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
```
在应用任何更改后,记得重新加载或重启 Nginx 服务。如果问题仍然存在,检查你的 PHP-FPM 日志获取更多线索。