一个困扰了我两天的问题,在linux安装好nginx后输入查看localhost:80出现了403的报错。
在csdn上查找了许多文章,403,permission denied最有可能的问题就是权限不足。
经过排查,确实是启动nginx的用户名和nginx工作时的用户名不一致导致的权限不足导致的,根据csdn文章指引修改了nginx配置文件,但是发现问题并没有解决,貌似是修改后的配置文件没有生效,最后一看,居然是因为配置文件定义用户名的那一段默认是被注释的!前面有个#把user行给注释掉了。。。
(1)安装完nginx后打开http://localhost:80发现403:
(2)查看错误日志发现报错如下:(13: Permission denied),顺便提供我的error.log路径以供参考
cat /usr/local/nginx/logs/error.log
(3)查看后台,发现启动的用户名和工作的用户名不一致,启动用户是root,工作用户是nobody
ps aux | grep nginx
(4)试着修改配置文件,只需要修改全局块的user部分就好了,在配置文件的最顶部,以下是部分参数的注释参考:
这是我一开始修改完的样子
修改前:
修改后:
但是重启以后,发现我的配置文件并没有生效????
工作用户还是nobody!
后来仔细翻看才发现,原来user被注释掉了,配置文件默认user是有#的;
(5)删除#,问题解决,但此时已经过去两天了😭
在解决问题期间也遇到了些其他问题,这里也写出来,提供参考
1、在使用vi编辑配置文件后,无法启动./nginx,报错如下
这是编辑器的问题,需要在windows下载Editplus,复制配置文件的内容到editplus里,保存文件名字为nginx.conf,再用xshell上传到原来nginx.conf的位置(最好先提前把linux里的nginx.conf删掉),附上问题相关链接:
nginx: [emerg] unknown directive " " in /opt/nginx/conf/nginx.conf:3解决办法
2、在重启nginx的时候,无法找到nginx.pid,报错如下
解决办法就是,使用-c指明nginx的配置文件路径(前面为./nginx启动路径,后面为配置文件路径)
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
3、在linux机器中直接使用wget下载nginx,连接不上
直接在windows上下载nginx的tar.gz压缩包,通过xshell上传到linux机器中,然后再进行解压安装操作,附上相关链接:
如何通过xshell把Windows的文件上传到linux上(或从linux下载到win)
4、在xshell把windows的文件上传到linux时,出现乱码,无法上传
出现乱码的上传语句是
-b:用binary的方式上传下载,不解释字符为ascii。
-e:强制escape 所有控制字符。
rz 或 rz -be
正常使用rz -be应该就可以解决了,但是我的linux需要使用rz -eb才行,不知道顺序有什么影响,附上相关链接:
5、在解决问题过程中的一些常用命令
ps aux | grep nginx //查看关于nginx的所有后台
killall nginx //关闭关于nginx所有后台
./nginx -s reload //重启nginx(需要在nginx的sbin目录中使用)
find / -name nginx.conf //在/(根目录)中搜索所有名字为nginx.conf的文件