1
joqsc722 239 天前
这个错误信息表明你的 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 日志获取更多线索。 |
2
adoal 239 天前
fastcgi_param SERVER_NAME $host;
|
3
aaabababa OP @adoal
原来是 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 改成 fastcgi_param SERVER_NAME $host; 页面无法正常跳转呢 |
4
aaabababa OP @joqsc722 AI 解答的?
root /www/test.net/$subdomain; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 原来的配置这样的 |
5
aaabababa OP set $subdomain_root /www/test.net/$subdomain;
if (!-d $subdomain_root) { return 404; } 搞定了,先判断目录是否存在就行了。。。 |
6
lymanbernadette6 238 天前
|
7
Shiroka 238 天前 via iPhone
AI 回答直接贴分享链接就行了,原封不动 cv 过来又臭又长还影响看下面的回答 😥
|
8
Livid MOD @lymanbernadette6 谢谢,那个账号已经被彻底 ban 。
|