这个403的问题真的是很奇葩,找了我几个小时,看了很多博客也没解决。最后发现是一个名为wordpress空文件夹的问题。
因为前段时间调整了目录结构把分类都放到了二级目录下,当时也没检查(提醒大家,修改url结构一定要检查看能否正常访问)。几天后才发现https://nxysj.top/wordpress 这个分类无法访问。
对于网站访问403有以下几种原因
文件权限不正确
文件权限是任何类 Unix 操作系统(包括运行 Nginx 的操作系统)的基础。服务器上的每个文件都有一组权限,规定谁可以读取、写入或执行该文件。这些权限通常由三位八进制数表示,其中每个数字对应于用户(所有者)、组和其他人的权限。
例如,权限设置 644 表示所有者可以读取和写入文件,而组和其他人只能读取。如果权限设置得太严格,Nginx 可能无法读取必要的文件以将其提供给用户,从而导致 403 错误。相反,如果权限太宽松,可能会允许未经授权的用户修改敏感文件,从而带来安全风险。
目录权限不正确
目录权限控制谁可以读取、写入或执行目录的内容。目录的正确权限通常设置为 755 ,这允许所有者读取、写入和执行,而组和其他人只能读取和执行。这些权限确保 Nginx 可以遍历目录结构以找到并提供必要的文件。
如果目录权限过于严格,Nginx 将无法访问目录中的文件,从而导致 Nginx 403 。 要设置目录的正确权限,可以使用chmod命令:
| sudo chmod 755 /path/to/directory |
除了设置正确的权限外,确保目录归正确的用户所有也很重要。 Nginx 通常在特定用户(通常是 www-data )下运行,目录应归该用户所有以确保正确访问。 您可以使用chown命令更改目录的所有权 :
| susudo chown -R www-data:www-data /path/to/directory |
此命令将目录及其内容的所有者和组更改为 www-data ,确保 Nginx 具有必要的访问权限。
缺少索引文件
索引文件是用户请求目录时 Nginx 提供的默认页面。常见的索引文件包括 index.html 、 index.htm和 index.php 。如果索引文件缺失,Nginx 可能会返回 403 Forbidden Nginx 错误,因为它不知道哪个文件应该作为目录的默认页面。
为了确保 Nginx 识别正确的索引文件,您需要验证 Nginx 配置文件中的 index指令。index指令 指定 Nginx 应查找作为索引文件的文件。以下是如何配置 index 指令的示例:
| location / { index index.html index.htm index.php; } |
在此示例中,Nginx 将按指定顺序查找 index.html 、 index.htm或 index.php 。如果未找到任何文件,Nginx 将返回 403 错误。因此,确保目录中至少存在其中一个索引文件非常重要。
Nginx 配置文件中的无效指令
Nginx 配置文件 ( nginx.conf ) 包含控制 Nginx 行为方式和提供内容的指令。此文件中无效或不正确的指令可能会导致 403 Forbidden Nginx 错误。常见问题包括路径引用不正确、位置块配置错误或访问控制指令使用不当。
例如,如果 root 指令指向不存在的目录或 位置 块未正确定义,Nginx 可能无法找到请求的资源,从而导致 Nginx 403 。以下是配置良好的 Nginx 服务器块的示例:
| server { listen 80; server_name example.com; root /var/www/html; location / { index index.html index.htm index.php; try_files $uri $uri/ =404; } } |
在此配置中, root 指令指定 Nginx 将在其中查找文件的目录, index指令列出默认索引 文件。try_files 指令尝试提供请求的 URI,并在必要时附加尾部斜杠,如果未找到文件,则返回 404 错误。
IP 地址限制
可以使用 allow 和 denied指令将 Nginx 配置为基于 IP 地址限制访问 。如果您的 IP 地址不被允许,您将遇到 403 Forbidden 错误。这对于将对网站或应用程序某些部分的访问限制为特定 IP 地址非常有用。
例如,以下配置仅允许来自 IP 地址 192.168.1.1的访问 ,并拒绝来自所有其他 IP 地址的访问:
| location / { allow 192.168.1.1; deny all; } |
如果遇到 403 错误,请检查 Nginx 配置文件中的 allow 和 denied指令,以确保您的 IP 地址被允许。如有必要,请更新这些指令以包含您的IP 地址。
.htaccess 问题
Nginx 本身不支持 与 Apache 关联的 .htaccess文件。相反,应将等效指令放在主 Nginx 配置文件中。尝试使用.htaccess时配置错误 可能会导致错误。
实际问题
我通过上面的步骤排查,发现还是没有用,然后我找到另一个网站使用wordpress这个url访问也是出现了同样的问题。到这我本来以为是wordpress这个crm系统的什么文件限制了这个路径,但我又找到另一个网站使用这个wordpress的url访问没有出现这个问题,我又重新开始找问题。



我修改wrodpress这个路径,网址可以正常访问。那我想应该是什么地方出现了冲突,最后在后台wordpress文件中发现了罪魁祸首,一个名为wordpress的空文件夹,应该是当时安装wordpress解压来的空文件。因为这个冲突造成了文件权限的问题,访问wordpress这个路径返回变成了403。最后删掉这个空文件加没有问题了。


总结
对于网站修改路径之后要及时检查,看是否访问正常。对于网站碰到的一些问题要在网络上积极寻找解决方法,不要慌张,必要时可以直接请专业人士进行查看。