吃透nginx 403 forbidden报错
目录
问题
解决
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报错相关推荐
- 【爬虫】403 Forbidden报错的解决办法
查询HTTP状态码可以看到403是服务器禁止访问,可能原因有: User-Agent字段 其它情况,可以留言或评论,本文后续补充 User-Agent字段 若用Python做爬虫,默认User-Age ...
- 宝塔建站403 Forbidden报错、WordPress网站出现Error establishing a database connection
1.改服务器root和密码 2.安全组8888端口开放(看宝塔面板设置端口) 3.看自己购买的服务器系统 CentOS服务器用Nginx Cloud Linux服务器用Apache (这两只能选一个 ...
- nginx集群报错“upstream”directive is not allow here 错误 [
nginx集群报错"upstream"directive is not allow here 错误 搭建了一个服务器, 采用的是nginx + apache(多个) + php + ...
- nginx: [emerg] unknown directive ssl Nginx配置SSL报错
配置环境: nginx:1.8.0版本 CentOS: 6.8版本 问题描述: 本人是在使用nginx 访问方式由http转成https过程中出现的以下问题,参考的是该博文完美解决,大家有什么问题可以 ...
- dss nginx 403 forbidden
在centos7上面搭建 DataSphereStudio 精简版, 一切安装成功之后, 发现访问 ip:8088 一直显示 403 forbidden, 一直以为是软件装的不对, 追个排查之后才发现 ...
- NGINX 403 forbidden 【windows端】
首先说一下发生情况的背景:因为windows端需要传导前端文件,所以路径需要进行一定的修改,在修改路径的过程中,重启nginx后发现网页报错:403 forbidden,最后在网上查询了许多资料后终于 ...
- Nginx 403 forbidden 错误的五种原因及解决方法(详细)
搭建个人下载地址时,nginx访问时报403错??来5个原因帮你找到解决办法 首先报错先查看日志,这里查看nginx日志,路径为/var/log/nginx/error.log.打开日志发现详细报错如 ...
- nginx 403 forbidden 二种原因
1,缺少index.html或者index.php文件 server { listen 80; server_name localhost; index index.php index ...
- Nginx 403 Forbidden 排错记录汇总
记录一 当你将 nginx 作为 web server 的时候,403 错误主要是下面两条原因: 一.所有者对目录没有写的权限. 此时可用 chmod 777 目录名 先完全放开权限,如果问题解决,则 ...
最新文章
- 解决向数据库mysql插入double数据小数点不显示问题
- linux怎么安装java环境变量_linux怎么配置java环境变量
- VB.NET循环体内的局部变量
- 计算机组成原理实验load,计算机组成原理实验报告五
- Buck降压电路仿真与解析
- java程序转成mac应用,如何为Java应用程序创建Mac安装程序?
- 安卓逆向_7 --- 六种快速定位关键 Smali 代码的方法 ( 去掉 RE 广告 )
- 泳池里到底有多少排泄物?
- java 代码块的意义_Java基础(9) - 静态、代码块
- python实训day5
- PostgreSQL 如何实现网络压缩传输或加密传输(openssl)
- 没钱发工资?当着董事长总经理是好玩的,不用负责?
- vs2012 ultimate 密钥
- 爬虫抓取新浪微博数据
- php mysql 去重,数据库文本去重
- Matlab导入Excel数据快速绘图
- CAD卸载不干净不能重新安装(恶心死我了)
- 短篇硬科幻小说《勾股:2.013》
- 无法删除文件 数据错误 循环冗余检查
- 【Android Camera开发】Android Automotive介绍