Nginx/Php Fastcgi 权限问题

Nginx/Php Fastcgi 权限问题

当我尝试重新启动 nginx 时突然出现以下错误:

nginx:配置文件/etc/nginx/nginx.conf语法正常

nginx:[emerg] mkdir()“/var/run/nginx-cache/site1”失败(2:没有此文件或目录)

nginx:配置文件/etc/nginx/nginx.conf 测试失败

因此我必须创建 nginx-cache 文件夹并使 www-data 成为其所有者才能重新启动 nginx,但我希望有更好的方法。

供您参考,我的 nginx 配置如下:

fastcgi_cache_path /var/run/nginx-cache/site1 levels=1:2 keys_zone=site1:100m inactive=60m;
fastcgi_cache_path /var/run/nginx-cache/site2 levels=1:2 keys_zone=site2:100m inactive=60m;
fastcgi_cache_path /var/run/nginx-cache/site3 levels=1:2 keys_zone=site3:100m inactive=60m;
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;

server {
....
location ~ \.php$ {
....
 include fastcgi_params;
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_cache_bypass $skip_cache;
 fastcgi_no_cache $skip_cache;
 fastcgi_cache site1;
 fastcgi_cache_valid  60m;
}

server {
....
location ~ \.php$ {
....
 include fastcgi_params;
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_cache_bypass $skip_cache;
 fastcgi_no_cache $skip_cache;
 fastcgi_cache site2;
 fastcgi_cache_valid  60m;
}

server {
....
location ~ \.php$ {
....
 include fastcgi_params;
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 fastcgi_cache_bypass $skip_cache;
 fastcgi_no_cache $skip_cache;
 fastcgi_cache site3;
 fastcgi_cache_valid  60m;
}

任何帮助将不胜感激!

答案1

你还没有说明你的发行版是什么。但是,至少在 Debian 上,/var/run是指向 的符号链接/run,其中文件系统类型是临时文件

临时文件不是永久文件系统,因此每次重启时都会被破坏。因此,您必须编写一个在启动时创建这些目录的脚本,或者使用永久存储中的其他目录来存放fastcgi_cache_path

我更愿意将路径更改为永久存储,这样缓存在重启后仍然会存在。然后让 Linux OS 磁盘缓存处理文件的内存缓存。

相关内容