以下是unity webgl的apache重写规则
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP:Accept-encoding} gzip
RewriteRule (.*)Data(.*)\.js $1Compressed$2\.jsgz [L]
RewriteRule (.*)Data(.*)\.data $1Compressed$2\.datagz [L]
RewriteRule (.*)Data(.*)\.mem $1Compressed$2\.memgz [L]
RewriteRule (.*)Data(.*)\.unity3d $1Compressed$2\.unity3dgz [L]
AddEncoding gzip .jsgz
AddEncoding gzip .datagz
AddEncoding gzip .memgz
AddEncoding gzip .unity3dgz
目前在 nginx 我有以下
location ~* \.(js|data|mem|unity3d)$
{
gzip_static on;
if ($request_filename ~ "\.jsgz$" ) {
rewrite ^(.js.gz)$ /$1.jsgz;
}
if ($request_filename ~ "\.datagz$" ) {
rewrite ^(.data.gz)$ /$1.datagz;
}
if ($request_filename ~ "\.memgz$" ) {
rewrite ^(.mem.gz)$ /$1.memgz;
}
if ($request_filename ~ "\.unity3dgz$" ) {
rewrite ^(.unity3d.gz)$ /$1.unity3dgz;
}
}
location ~* \.(jsgz|datagz|memgz|unity3dgz)$ {
add_header Content-Encoding gzip;
break;
}
但它不起作用,根据我对原始apache重写的理解,它假设自动将js|data|mem|unity3d压缩为gunzip格式并在文件名末尾添加“gz”名称,如何在nginx中重写而gzip_static 不支持自定义文件名?
最佳答案
您现在可能已经想通了,但是我在自己进行 Apache 到 Nginx 的转换时偶然发现了这个问题。
Nginx 有一个名为 gzip_static 的模块,如果客户端支持 gzip,它将自动查找文件的预压缩版本并提供它们。这要求您将文件从 Compressed 目录移动到 Data 目录,并稍微更改文件扩展名:
之前:
# cd MyProject
# tree
.
|-- Compressed
| |-- MyProject.datagz
| |-- MyProject.html.memgz
| |-- MyProject.jsgz
| |-- fileloader.jsgz
| |-- UnityConfig.jsgz
| |-- UnityProgress.jsgz
|-- Data
| |-- MyProject.data
| |-- MyProject.html.mem
| |-- MyProject.js
| |-- fileloader.js
| |-- UnityConfig.js
| |-- UnityProgress.js
之后:
# tree
.
|-- Compressed
|-- Data
| |-- MyProject.data
| |-- MyProject.data.gz
| |-- MyProject.html.mem
| |-- MyProject.html.mem.gz
| |-- MyProject.js
| |-- MyProject.js.gz
| |-- fileloader.js
| |-- fileloader.js.gz
| |-- UnityConfig.js
| |-- UnityConfig.js.gz
| |-- UnityProgress.js
| |-- UnityProgress.js.gz
在你的 Nginx 配置中:
location /path/to/MyProject/Data {
gzip_static on;
}
请注意,Nginx 必须使用 --with-http_gzip_static_module 构建。您可以通过运行来检查您的版本是否已经具有此功能:
nginx -V
唯一的缺点是您必须移动/重命名文件,但这对于单线解决方案来说是一个小小的不便。
以下是如何移动/重命名 gzip 文件以匹配 nginx 的期望:
cd Data
mv ../Compressed/*gz ./
rename 's/(.*)gz$/$1.gz/' *gz
关于apache - 如何将此 apache 重写转换为 nginx?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27577632/