干掉nginx 403 forbidden报错

liuzhen007 等级 999 0 0

目录

问题

解决

  1. 设置启动用户owner

  2. 切换管理员模式

  3. 开放访问目录权限

  4. 明确index索引文件

问题

按照网上的教程,我们顺利启动了默认80端口的nginx服务。

具体安装教程可以参考:https://liuzhen.blog.csdn.net/article/details/83898155

接下来,我们开始将它修改成自己的静态服务,但是遇到了“nginx 403 forbidden”的报错。

解决

首先需要说明一下mac和linux的nginx配置文件的位置略有不同,具体情况如下:

mac:/usr/local/etc/nginx/nginx.conf

linux:/etc/nginx/nginx.conf

好了,开始我们坎坷的一路吧:

修改配置后,重新启动nginx服务:

sudo nginx -s reload

报错:

nginx: [emerg] bind() to 0.0.0.0:8066 failed (48: Address already in use) #tcp_nopush on; nginx: [emerg] bind() to 0.0.0.0:8066 failed (48: Address already in use) nginx: [emerg] bind() to 0.0.0.0:8066 failed (48: Address already in use) nginx: [emerg] bind() to 0.0.0.0:8066 failed (48: Address already in use) nginx: [emerg] bind() to 0.0.0.0:8066 failed (48: Address already in use) nginx: [emerg] still could not bind()

自己以为很简单,不就是端口占用了嘛,查找对应的进程:

localhost:nginx lz$ lsof -i:8066 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME Google 31199 lz 33u IPv4 0x44b485117ae7339 0t0 TCP localhost:62265->localhost:8066 (ESTABLISHED) Google 31199 lz 34u IPv4 0x44b48510e8b1de9 0t0 TCP localhost:62266->localhost:8066 (ESTABLISHED)

原来元凶是31199,那就干掉它吧。

localhost:nginx lz$ kill 31199 localhost:nginx lz$ kill 31199 -bash: kill: (31199) - No such process

通过上述的结果,说明第一次确实杀掉31199了。

这时神奇的现象出现了,我刷新页面,服务还能访问????

再次查看8066端口,居然还有进程存在:

localhost:nginx lz$ lsof -i:8066 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME Google 71351 lz 18u IPv4 0x44b485117694179 0t0 TCP localhost:62488->localhost:8066 (ESTABLISHED) Google 71351 lz 22u IPv4 0x44b4851157d2971 0t0 TCP localhost:62489->localhost:8066 (ESTABLISHED)

那么问题来了,意思是对应的nginx进程杀不掉吗?

那就尝试停止服务命令关闭nginx:

sudo nginx -s stop

结果却报错了:

nginx: [alert] kill(1668, 1) failed (3: No such process)

同时,页面也不能访问了,出现了403。

于是开始了疯狂尝试。。。

1. 设置启动用户owner

在nginx.conf配置文件首行增加用户权限声明,注意不要丢了分号。

user root owner;

2. 切换管理员模式

sudo su

输入密码完成切换,再执行相关命令。

3. 开放访问目录权限

如果访问的目录没有对应的权限,也会出现403报错。

所以尝试了如下方式,但是本人遇到的不是这个问题。

chmod -R 777 /Users/lz/job/resource

4. 明确index索引文件

本来想实现最简单的静态服务,可以直接访问所有文件和目录列表,自己将index配置项改成了.。但是,这样就导致了403的问题。

后来明确index索引文件后,问题消失。

location / { root /Users/lz/job/resource; index index.html index.htm; }

遇到报错时,我们可以通过借助日志定位一部分问题,如果不知道日志的存储路径,可以使用如下命令:

nginx -V

注意:V是大写的,小写的是显示版本号。

实际对比效果如下:

localhost:nginx lz$ nginx -v nginx version: nginx/1.19.5 localhost:nginx lz$ nginx -V nginx version: nginx/1.19.5 built by clang 12.0.0 (clang-1200.0.32.27) built with OpenSSL 1.1.1h 22 Sep 2020 (running with OpenSSL 1.1.1i 8 Dec 2020) TLS SNI support enabled configure arguments: --prefix=/usr/local/Cellar/nginx/1.19.5 --sbin-path=/usr/local/Cellar/nginx/1.19.5/bin/nginx --with-cc-opt='-I/usr/local/opt/pcre/include -I/usr/local/opt/openssl@1.1/include' --with-ld-opt='-L/usr/local/opt/pcre/lib -L/usr/local/opt/openssl@1.1/lib' --conf-path=/usr/local/etc/nginx/nginx.conf --pid-path=/usr/local/var/run/nginx.pid --lock-path=/usr/local/var/run/nginx.lock --http-client-body-temp-path=/usr/local/var/run/nginx/client_body_temp --http-proxy-temp-path=/usr/local/var/run/nginx/proxy_temp --http-fastcgi-temp-path=/usr/local/var/run/nginx/fastcgi_temp --http-uwsgi-temp-path=/usr/local/var/run/nginx/uwsgi_temp --http-scgi-temp-path=/usr/local/var/run/nginx/scgi_temp --http-log-path=/usr/local/var/log/nginx/access.log --error-log-path=/usr/local/var/log/nginx/error.log --with-compat --with-debug --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-ipv6 --with-mail --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module

因此,我们可以非常轻易的找到对应的错误日志路径 :/usr/local/var/log/nginx/error.log。

收藏
评论区

相关推荐

干掉nginx 403 forbidden报错
目录问题解决1. 设置启动用户owner2. 切换管理员模式3. 开放访问目录权限4. 明确index索引文件 问题按照网上的教程,我们顺利启动了默认80端口的nginx服务。具体安装教程可以参考:https://liuzhen.blog.csdn.net/article/details/83898155接下来,我们开始将它修改成自己的静态服务,但是遇到
API返回错误信息的最佳实践
### 使用HTTP Status区分不同消息返回 最基础的三个状态 200 OK, 400 Client Error, 500 Server Error 这些应该是够的, 如果客户端可以处理更细的划分, 可以细分为: 200 OK,  201 Created, 304 Not Modified, 400 Client Error, 401 Un
LNMP架构之虚拟主机配置、用户认证及域名重定向
本文索引: * 配置nginx虚拟主机 * nginx用户认证 * 针对目录 * 针对文件 * 域名重定向 * * * ### 配置nginx虚拟主机 * 修改nginx主配置文件 [root@localhost nginx-1.12.2]# vim /usr/local/nginx/conf/ngi
LNMP架构之访问日志、日志切割、静态文件不记录及过期时间设置
本文索引: * Nginx访问日志 * Nginx日志切割 * 静态文件不记录日志和过期时间 * * * ### Nginx访问日志 * 修改nginx配置文件 [root@localhost vhost]# vim /usr/local/nginx/conf/nginx.conf # 搜索:/log_format
Docker Compose 一键部署Nginx代理Tomcat集群
**Docker Compose 一键部署Nginx代理Tomcat集群** **目录结构** [root@localhost ~]# tree compose_nginx_tomcat/ compose_nginx_tomcat/ ├── docker-compose.yml ├── mysql │   ├──
Docker 使用入门,创建一个Nginx服务器
**运行环境:** `MAC` **Docker 版本:** `Docker version 17.12.0-ce, build c97c6d6` ### 一、启动Nginx 服务器 > 启动Nginx 服务器,并进入模拟终端 docker run -p 8080:80 --name nginx_web -it nginx /bin/bas
Lua 与php 性能测试说明文档
Lua 与php 性能测试说明文档 ================= 测试环境   192.168.10.30 获取同一物品信息  读取redis localhost:6379 Php+nginx+redis Lua+nginx+redis ngx\_lua将lua嵌入到nginx,让nginx执行lua脚本,高并
Nginx 反向代理配置及403出现原因
//image.happy.com.conf **server {**     //监听80端口 **listen 80;**     //状态on,首页展现索引     //状态off,**首页403**,不影响下层资源访问     **autoindex off;**     //image.happy.com     **serve
Nginx报错:Sorry, the page you are looking for is currently unavailable. Please try again later.
查看了进程, nginx, php-fpm都在运行, 排除程序错误, 那么就是配置的问题了. 一个可能的错误, 是由于配置中的 fastcgi\_pass 配置错了 错误的配置如下  server { listen 80; server_name localhost; #
Nginx设置成服务并开机自动启动
在/etc/init.d下创建文件nginx \[root@localhost ~\]# vim /etc/init.d/nginx 其内容参考[nginx官方文档](https://www.oschina.net/action/GoToLink?url=https%3A%2F%2Fwww.nginx.com%2Fresources%2Fwiki%2Fs
QeePHP中的访问控制配置
(1)\_code/myapp.php文件中:  /**      * 访问被拒绝时的错误处理函数      */     protected function _on_access_denied()     {         $message = "";         require(_MYAP
Tomcat8访问管理页面localhost出现:403 Access Denied
403 Access Denied You are not authorized to view this page. If you have already configured the Manager application to allow access and you have used your browsers back button, us
vue 项目部署后 刷新一下 页面找不到 解决
1.修改配置router的参数  (效果不好) ![](https://oscimg.oschina.net/oscnet/dff6f524904c9e7851f22a532f975ce41ef.png) 2\. (不能解决 出现403) 后端配置例子 Apache <IfModule mod_rewrite