Php 基于子域名,通过NGINX提供静态内容

Php 基于子域名,通过NGINX提供静态内容,php,nginx,Php,Nginx,我试图通过直接从NGINX提供静态内容,而不是请求命中PHP,来提高我运行的站点的页面速度 我的网页路径如下: gamea.com.mysite.com anotherb.net.mysite.com finalc.org.mysite.com 为这些对象生成页面时,它存储在如下路径中: /存储/app/page cache/games/game/gamea_com/1.c /存储/app/page cache/games/anot/anotherb_net/1.c /存储/app/pag

我试图通过直接从NGINX提供静态内容,而不是请求命中PHP,来提高我运行的站点的页面速度

我的网页路径如下:

  • gamea.com.mysite.com
  • anotherb.net.mysite.com
  • finalc.org.mysite.com
为这些对象生成页面时,它存储在如下路径中:

  • /存储/app/page cache/games/game/gamea_com/1.c
  • /存储/app/page cache/games/anot/anotherb_net/1.c
  • /存储/app/page cache/games/fina/finalc_org/1.c
路径结构采用子域的前4个字母,然后是另一个具有完整路径的文件夹,并将“.”替换为“u”-例如,“gamea.com”=“/game/gamea_com/”。实际缓存页文件存储为“1.c”

如何通过NGINX实现这一点?我有点卡住了,我确实找到了,但我不确定如何在我的案例中使用它-有人能提供一个示例NGINX配置,将NGINX指向如上所述的正确路径吗


我感谢任何能帮我的人

第一步是使用正则表达式捕获子域的三个部分,然后将它们粘贴到
root
语句中。使用命名捕获,因为数字捕获可能超出其评估范围。有关详细信息,请参阅

例如:

server {
    server_name  "~^(?<name1>.{4})(?<name2>.*)\.(?<name3>.*)\.example\.com$";
    root /path/to/root/$name1/$name1$name2_$name3;
    ...
}
map $http_host $mypath {
    default                                                     "nonexistent";
    "~^(?<name1>.{4})(?<name2>.*)\.(?<name3>.*)\.example\.com$" $name1/$name1$name2_$name3;
}
server {
    ...
    root /path/to/root;
    location / {
        try_files $uri /$mypath$uri =404;
    }
}

您可以将
try\u文件拆分为两个
location
块,方法是:

root /path/to/root;
location / {
    try_files $uri @other;
}
location @other {
    try_files /$mypath$uri =404;
}
根据您希望Nginx首先查找的文件交换术语。在
location
中使用
add_header
语句自定义相应的响应。有关详细信息,请参阅。
位置
可以包含特定的标题

Hmm。。。如何设置文件的路径,包括仅为路径中限制为4个字母的部分提取4个字母,例如“/fina/finalc_org/1.c”中的“fina”?
$name1
应捕获前4个字母(例如“fina”),
$name3
捕获
之后的任何内容(例如:。“org和
$name2
捕获之间的位(例如“lc”)。此外,我修复了
root
语句中的两个错误。我主要想我可以使用带有“try\u文件”的“location/{”location块,而不需要另一个服务器{}”块?您可以使用
映射
并使用
try\u files
语句对其进行评估。