最近把 VPS 上的 Apache Httpd 都换成了 Nginx
但是一般新搭建的 Nginx 服务器都会遇到这两个问题
1.访问根目录提示 403 错误
2.不提示 403 错误,却提示下载
首先来看看 403 的问题,进入 /etc/PHP-fpm.d 目录
vim 或 nano 编辑 www.conf 文件,往下拉一点找到 Unix user/group of processes
看看 user 和 group 分别是什么,一般 CentOS 上是 apache,也有可能是 www 之类
再往下拉一点,看到 listen = 127.0.0.1:9000 记住端口是 9000
关闭此文件,再打开 /etc/nginx 目录下的 nginx.conf 文件
第一行 user nginx 改为 user apache 保持和 PHP 上的用户一致,保存并退出这个文件
进入当前目录下的 conf.d 目录,编辑 default.conf。如果是使用 虚拟主机 的形式,同样编辑那个文件。
1.检查并编辑 server 下的内容,listen 80 监听端口;server_name 对应服务器域名,可用 localhost;root 对应网页文件存放目录,例如 /var/www/html;index index.php index.html index.htm,这个可自定义默认访问的网页文件。
2.error 404/50x 等配置保持默认就行,不用修改
3.【重点】 最后加入如下配置:
location ~ \.php {
# 重点是这里,9000对应刚刚记下的端口。解决访问域名提示下载的问题。
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
保存后 service nginx restart 或 nginx -s reload 重启 Nginx 即可。
下方是参考配置:
#
# The default server
#
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html index.htm;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
try_files $uri $uri/ /index.html;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
如果还是会遇到提示 403,请把存放网页文件目录所有者改为 apache 或 www 并赋予网页文件相应权限即可。