操作系统: OSX 10.11.4 El Capitan Nginx: 1.8.1 PHP-FPM: 5.5.31
目前我的网站根目录文件夹如下:
/webserver
/webverver/phpinfo.php
/webserver/example
/webserver/example/index.php
我可以使用curl或在本地主机上访问浏览器来访问默认的“欢迎使用Nginx”页面。如果我浏览文件,那么PHP文件将尝试下载而不是执行。如果我尝试访问我已经创建的示例站点
local.example.com
(我已将其添加到我的hosts文件中),则使用curl会返回403禁止头部返回,而使用网络浏览器则会显示漂亮简单的“拒绝访问”。
我对文件权限和目录所有权不是很了解,有人能告诉我应该如何配置吗?我被建议运行以下命令,但目前为止没有改变:
sudo chmod -R 755 /Users/nickcorin/webserver
我的错误日志中没有任何日志,除了“信号已启动”的日志。
这是我目前的配置:
nginx.conf
#user nobody;
worker_processes 1;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name localhost;
location / {
root /Users/nickcorin/webserver;
autoindex on;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include servers/*;
}
servers/example
upstream php {
server 127.0.0.1:9000;
}
server {
listen 80;
root /Users/nickcorin/webserver/example;
server_name local.example.com;
index index.php index.html index.htm;
autoindex on;
location ~ \.php$ {
try_files $uri $uri/ /index.php?$args ;
index index.html index.htm index.php;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_intercept_errors on;
include fastcgi_params;
}
}
**编辑 - NGINX文件夹权限和进程所有者**
我在我的日志文件夹/usr/local/var/nginx
上运行了ls -la
命令,结果如下:
drwxr-xr-x 4 nickcorin admin 136 Apr 20 23:53 .
drwxr-xr-x 5 nickcorin admin 170 Apr 20 21:47 ..
-rw-r--r-- 1 root admin 4718 Apr 21 08:06 access.log
-rw-r--r-- 1 nickcorin admin 480 Apr 21 10:28 error.log
这是我的Web服务器根目录的结果:
drwxr-xr-x 4 nickcorin staff 136 Apr 22 12:23 .
drwx-----x+ 54 nickcorin staff 1836 Apr 22 10:01 ..
drwxr-xr-x 3 nickcorin staff 102 Apr 20 22:14 example
-rw-r--r--@ 1 nickcorin staff 23 Apr 19 11:58 info.php
这是运行
ps aux | grep nginx
命令的结果:root 756 0.0 0.0 2466616 480 ?? Ss 12:24PM 0:00.00 nginx: master process nginx
nickcorin 759 0.0 0.0 2445080 820 s000 S+ 12:24PM 0:00.00 grep nginx
nobody 757 0.0 0.0 2475832 1044 ?? S 12:24PM 0:00.00 nginx: worker process
**编辑#2 - 虚拟主机配置文件 **
我已经解决了我的问题,现在一切都运行顺利。我不得不编辑我的虚拟主机配置文件如下:
server {
listen 80;
listen [::]:80 ipv6only=on;
server_name local.example.com;
root /Users/nickcorin/webserver/example;
index index.php index.html index.htm;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
我使用以下两行代码来修复我的权限问题:
sudo chown -R nickcorin /Users/nickcorin/webserver (Web Server Root)
sudo chmod 755 /Users/nickcorin/webserver/example (Virtual Host Root)
感谢所有帮助我解决问题的人 :)
ps aux | grep php-fpm
显示我的用户“nickcorin”处理进程。 - Nick Corinps aux | grep php-fpm
表示在 php-fpm 的池配置中指定listen.owner
和listen.group
属性。确保池配置中的user
和group
与您的文件权限匹配。编辑默认池配置,例如:/etc/php5/fpm/pool.d/www.conf
或将其复制到新池中,例如:/etc/php5/fpm/pool.d/mysite.conf
并通过listen = 127.0.0.1:9001
让它监听另一个端口。 - Hamed Nemati