微信公众号“SRE成长记”可查看原文
关于403 Forbidden
403 Forbidden是使用Nginx服务器时的常见错误,是http的一个状态码,表示客户端尝试访问web服务器的某些内容,但是,权限不足。
花样百出的403场景
1.索引文件问题
nginx配置文件nginx.conf默认的配置如下:
location / {
root html;
index index.html index.htm;
}
1.1 问题场景
场景一:如果html目录为空目录,下面没有任何的文件,访问会返回403;
场景二:如果html非空,但不存在上述配置中的index.html、index.htm文件,也会返回403。
1.2 解决方法
1)在html目录下创建index.html
2)将html下的自定义文件名加入nginx.conf
3)索引文件不可用时允许 Nginx 列出目录。通过将以下条目添加到配置文件来启用此模块(公网开放服务器慎用!)
修改nginx.conf加入2行配置:
location / {
root html;
index index.html index.htm;
autoindex on; #自动索引
autoindex_exact_size on; #显示文件大小
}
2. 权限设置错误
2.1 问题场景
场景一:nginx设置了访问控制白名单,客户端所在地址不在白名单之内;
场景二:nginx默认用户为nginx,而nginx无访问html目录的权限。
2.2 解决方法
1)如做了权限控制,评估是否开启访问白名单;
2)为了客户端能正常访问到资源,nginx 需要对整个路径具有 RWX(读取、写入和执行)权限。将资源赋予nginx用户权限即可。如:
chown nginx:nginx -R html
sudo chmod 755 {目录}
sudo chmod 644 {文件}
3. 域名代理配置的问题
3.1 问题场景
场景一:公网域名做了解析,但nginx没配置代理;
场景二:新增的nginx代理配置文件没生效
3.2 解决方法
修改或增加对应的配置文件,重启nginx。
4. http与https问题
4.1 问题场景
场景:某些特定的场景下,服务之间通过公网域名http方式调用接口,80端口调不通,返回403;
4.2 解决方法
临时解决可放开80端口http访问,去掉强制rewrite,但需要从研发端根本解决了。
5. 客户端自身的问题
403 Forbidden 除了除了服务端的问题,还可能是个别客户端本身的问题,例如:本地浏览器的缓存问题、防火墙问题,或者本地电脑的代理问题等。
关键是找到问题,对症下药,快速解决问题。
那么,你还遇到了哪些403问题呢?
::: hljs-right
(全文完)
:::
::: hljs-center
:::