[英]Serve static content through NGINX, based on subdomain name
我试图通过直接从 NGINX 提供 static 内容而不是请求命中 PHP 来提高我运行的站点的页面速度。
我在这样的路径上有网页:
当为这些生成页面时,它存储在如下路径中:
路径结构采用子域的前 4 个字母,然后是另一个具有完整路径的文件夹并替换“.”。 使用“_” - 例如“gamea.com”=“/game/gamea_com/”。 实际的缓存页面文件存储为“1.c”
这如何通过 NGINX 来实现? 我有点卡住了,我确实找到了这篇文章,但我不确定如何在我的情况下使用它 - 谁能提供一个示例 NGINX 配置,将 NGINX 指向如上所述的正确路径?
我感谢任何可以帮助我的人!
第一步是使用正则表达式捕获子域的三个部分,然后将它们粘贴到root
语句中。 使用命名捕获,因为数字捕获可能不在评估它们的 scope 之外。 有关详细信息,请参阅此文档。
例如:
server {
server_name "~^(?<name1>.{4})(?<name2>.*)\.(?<name3>.*)\.example\.com$";
root /path/to/root/$name1/$name1$name2_$name3;
...
}
或者,使用map
解码$http_host
变量。 正则表达式是相同的,结果可以在root
或try_files
语句中使用。
例如:
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_files
拆分为两个location
块:
root /path/to/root;
location / {
try_files $uri @other;
}
location @other {
try_files /$mypath$uri =404;
}
根据您希望 Nginx 首先查找的文件交换术语。 在任一location
使用add_header
语句来自定义适当的响应。 有关详细信息,请参阅此文档。 任何一个location
都可以包含特定的标题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.