我在CentOS 7上设置了一个nginx服务器nginx / 1.10.2。 我已经配置nginx使用php-fpm PHP 5.4.16(fpm-fcgi)(内置:2016年11月6日00:30:57)。
我使用在/etc/php-fpm.d/piwik.conf中配置的新池:
[piwik]
user = piwik
group = piwik
listen = /var/run/php5-fpm-piwik.sock
listen.owner = nginx
listen.group = nginx
;listen.mode = 0660
;php_admin_value[disable_functions] = exec,passthru,shell_exec,system
php_admin_flag[allow_url_fopen] = off
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /
nginx.conf的重要部分:
location ~ ^/piwik/(.*)$ {
root /usr/share/nginx/html;
try_files $uri =404;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_pass unix:/var/run/php5-fpm-piwik.sock;
# fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# fastcgi_param PATH_INFO $fastcgi_script_name;
# include fastcgi_params;
include fastcgi.conf;
# fastcgi_param REQUEST_METHOD $request_method;
fastcgi_index info1.php;
}
当我请求http://localhost/piwik/info1.php时,它向我显示 _SERVER [" USER"] piwik
所以现在我只在向文件夹设置正确权限时遇到问题 的/ usr /共享/ nginx的/ HTML / piwik。
正如我所读到的那样,用户需要在整个路径上获得x权限才能遍历到正确的文件夹中。 文件夹和文件必须是可读的,对于piwik,某些文件夹必须是可写的。 因为CentOS 7默认启用SELinux,所以我必须执行以下命令才能获得写访问权限: chcon -R -t httpd_sys_content_rw_t / usr / share / nginx / html / piwik / tmp / systemctl重启php-fpm
我已将用户和群组更改为piwik。 但是当我设置以下权限时 chmod 700 -R / usr / share / nginx / html / piwik / 我无法访问这些文件。我得到许可拒绝错误。 我发现我需要权利701:
drwx-----x. 13 piwik piwik 4096 18. Aug 09:49 .
drwxr-xr-x. 5 root root 4096 16. Aug 04:27 ..
-rwx-----x. 1 piwik piwik 932 8. Jun 2015 bower.json
-rwx-----x. 1 piwik piwik 38272 11. Apr 2016 CHANGELOG.md
...
...
请帮助我理解为什么我必须为其他用户启用可执行位。
好的,为了提供静态文件,甚至必须设置775?
谢谢。
祝你好运
编辑:
问题不在于动态php文件的服务。它是静态文件的服务,因为nginx在一个特定用户下运行。
我找到了这个链接: https://serverfault.com/questions/370820/user-per-virtual-host-in-nginx
有用的评论是: 在设置vhost时,为文档根提供一组www-data和perms 0710 (因为这需要root配置nginx,让自动化也设置必要的权限不是问题)。 然后docroot的内容只需要o + x代表目录,o + r代表文件。
所以我认为这是一个很好的设置: nginx以用户nginx身份运行 分隔不同的用户(应用程序)设置以下权限(以root身份运行):
ls -la /usr/share/nginx/
drwx--x--x. 6 nginx nginx 4096 18. Aug 19:18 html
groupadd pydio
useradd -g pydio pydio
mkdir /usr/share/nginx/html/pydio/
chown pydio:pydio -R /usr/share/nginx/html/pydio/
find /usr/share/nginx/html/pydio/ -type d -exec chmod 701 {} \;
find /usr/share/nginx/html/pydio/ -type f -exec chmod 704 {} \;
chmod 710 /usr/share/nginx/html/pydio/
请有人检查吗?