美文网首页
2020-03-25 Nginx相关问题的解答

2020-03-25 Nginx相关问题的解答

作者: 阿丧小威 | 来源:发表于2020-03-25 10:42 被阅读0次

    问题1:tegine和Nginx是什么关系?
    tegine是淘宝开源Nginx的分支,官方站点为http://tegine.taobao.org/
    问题2:Nginx网站出现403forbidden的原因及故障模拟重现深入讲解
    1)原因之一是Nginx配置文件的index参数里没有指定默认首页文件名,下面是Nginx配置文件里指定默认首页的参数。

    index  index.html index.htm;    ---不同的首页文件用空格分隔,按顺序生效
    

    问题模拟示例:

    [root@web01 conf]# cat extra/01_www.conf 
        server {
        listen       80;
        server_name  www.etiantian.org etiantian.org;
            location / {
                root   html/www;
                #index  index.html index.htm;    ---注释首页文件参数配置
            }
            access_log logs/access_www.log main gzip buffer=12k flush=5s;
        }
    [root@web01 conf]# nginx -t
    nginx: the configuration file /application/nginx-1.16.0//conf/nginx.conf syntax is ok
    nginx: configuration file /application/nginx-1.16.0//conf/nginx.conf test is successful
    [root@web01 conf]# nginx -s reload
    [root@web01 conf]# tail -1 /etc/hosts
    192.168.9.7 www.etiantian.org bbs.etiantian.org blog.etiantian.org etiantian.org
    [root@web01 conf]# ll ../html/www/
    总用量 4
    drwxr-xr-x 2 root root 25 3月  23 13:46 blog
    -rw-r--r-- 1 root root 25 3月  22 11:37 index.html    ---存在首页文件
    [root@web01 conf]# curl -I -s 192.168.9.7|head -1
    HTTP/1.1 403 Forbidden    ---问题是,Nginx没有指定首页文件的参数,因此访问Nginx时不会把index.html当首页,所以报403错误。
    

    2)原因之二是网站站点目录下没有配置文件index参数里指定的首页文件index.html或index.htm。

    [root@web01 conf]# cat extra/01_www.conf 
        server {
        listen       80;
        server_name  www.etiantian.org etiantian.org;
            location / {
                root   html/www;
                index  index.html index.htm;    ---配置首页文件配置
            }
            access_log logs/access_www.log main gzip buffer=12k flush=5s;
        }
    [root@web01 conf]# nginx -t
    nginx: the configuration file /application/nginx-1.16.0//conf/nginx.conf syntax is ok
    nginx: configuration file /application/nginx-1.16.0//conf/nginx.conf test is successful
    [root@web01 conf]# nginx -s reload
    [root@web01 conf]# mv ../html/www/index.html{,.bak}    ---暂时移除站点目录下的物理首页文件
    [root@web01 conf]# curl -I -s 192.168.9.7|head -1
    HTTP/1.1 403 Forbidden    ---问题是,Nginx有指定首页文件的参数,并且也指定了首页文件,但是首页文件不存在,所以报403错误。
    

    以上两个403的原因除了正确配置解决外,还可以通过一个参数来解决,就是:

    autoindex on;    ---当找不到首页文件时,会展示目录结构,这个功能一般用于下载,如阿里云镜像站点。
    

    示例如下:

    [root@web01 conf]# cat extra/01_www.conf 
        server {
        listen       80;
        server_name  www.etiantian.org etiantian.org;
            location / {
                root   html/www;
                index  index.html index.htm;
            autoindex on;
            }
            access_log logs/access_www.log main gzip buffer=12k flush=5s;
        }
    

    当不配置index首页时,模式图如下图所示。

    配置Nginx实现下载模式图

    3)原因之三是站点目录或内部的程序文件没有Nginx的用户访问权限。

    [root@web01 conf]# echo test > ../html/www/index.html
    [root@web01 conf]# chmod 700 ../html/www/index.html    ---设置700让Nginx用户无权读取
    [root@web01 conf]# ls -l ../html/www/index.html
    -rwx------ 1 root root 5 3月  25 10:29 ../html/www/index.html
    [root@web01 conf]# curl -I -s 192.168.9.7|head -1
    HTTP/1.1 403 Forbidden    ---403报错
    [root@web01 conf]# chmod 755 ../html/www/index.html    ---设置755让Nginx用户有权读取
    [root@web01 conf]# curl -I -s 192.168.9.7|head -1
    HTTP/1.1 200 OK
    

    4)原因之四是Nginx配置文件中设置allow、deny等权限控制,导致客户端没有权限访问。

    [root@web01 conf]# cat extra/01_www.conf 
        server {
        listen       80;
        server_name  www.etiantian.org etiantian.org;
            location / {
                root   html/www;
                index  index.html index.htm;
            allow  192.168.8.0/24;
            deny   all;
            }
            access_log logs/access_www.log main gzip buffer=12k flush=5s;
        }
    [root@web01 conf]# curl -I -s 192.168.9.7|head -1
    HTTP/1.1 200 OK
    [root@web01 conf]# nginx -t
    nginx: the configuration file /application/nginx-1.16.0//conf/nginx.conf syntax is ok
    nginx: configuration file /application/nginx-1.16.0//conf/nginx.conf test is successful
    [root@web01 conf]# nginx -s reload
    [root@web01 conf]# curl -I -s 192.168.9.7|head -1
    HTTP/1.1 403 Forbidden
    

    相关文章

      网友评论

          本文标题:2020-03-25 Nginx相关问题的解答

          本文链接:https://www.haomeiwen.com/subject/lqxtuhtx.html