nginx 子域名访问 subdomain 问题。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
aaabababa
V2EX    NGINX

nginx 子域名访问 subdomain 问题。

  •  
  •   aaabababa 2024-04-23 15:35:36 +08:00 1877 次点击
    这是一个创建于 586 天前的主题,其中的信息可能已经有所发展或是发生改变。
    server {
    listen 443 ssl;
    server_name ~^(?<subdomain>.+).test.net$;
    root /www/test.net/$subdomain;
    index index.php index.html;
    }

    2024/04/23 14:45:41 [error] 3982#0: *1730098 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 88.238.49.45, server: ~^(?<subdomain>.+).test.net$, request: "GET / HTTP/1.1", upstream: "fastcgi://unix:/data/php745/var/run/socket:", host: "test.net"

    nginx 设置子域名访问后,一直报错?
    8 条回复    2024-04-24 11:48:51 +08:00
    joqsc722
        1
    joqsc722  
       2024-04-23 15:39:53 +08:00
    这个错误信息表明你的 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 日志获取更多线索。
    adoal
        2
    adoal  
       2024-04-23 15:40:45 +08:00
    fastcgi_param SERVER_NAME $host;
    aaabababa
        3
    aaabababa  
    OP
       2024-04-23 17:21:51 +08:00
    @adoal

    原来是
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    改成
    fastcgi_param SERVER_NAME $host;
    页面无法正常跳转呢
    aaabababa
        4
    aaabababa  
    OP
       2024-04-23 17:24:05 +08:00
    @joqsc722 AI 解答的?

    root /www/test.net/$subdomain;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    原来的配置这样的
    aaabababa
        5
    aaabababa  
    OP
       2024-04-23 20:19:10 +08:00
    set $subdomain_root /www/test.net/$subdomain;

    if (!-d $subdomain_root) {
    return 404;
    }

    搞定了,先判断目录是否存在就行了。。。
    lymanbernadette6
        6
    lymanbernadette6  
       2024-04-24 10:23:29 +08:00
    @joqsc722
    @Livid 老大 AI
    Shiroka
        7
    Shiroka  
       2024-04-24 10:47:08 +08:00 via iPhone
    AI 回答直接贴分享链接就行了,原封不动 cv 过来又臭又长还影响看下面的回答
    Livid
        8
    Livid  
    MOD
    PRO
       2024-04-24 11:48:51 +08:00
    @lymanbernadette6 谢谢,那个账号已经被彻底 ban 。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2565 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 08:57 PVG 16:57 LAX 00:57 JFK 03:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86