V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
jaleo
V2EX  ›  Linux

Nginx 更改站点目录后变成找不到页面

  •  
  •   jaleo · 2015-10-12 11:14:25 +08:00 · 6817 次点击
    这是一个创建于 3338 天前的主题,其中的信息可能已经有所发展或是发生改变。
    新手转了 Nginx 1.8 , centos 7.1 的系统。
    Nginx 的默认站点目录是 /usr/share/nginx/html ,我建了一个目录 /usr/share/nginx/html/mysite/,把默认的几个 html 文件移到了 mysite 下。
    配置 /etc/nginx/conf.d/mysite.conf ,打开站点页面,一切正常。

    现在我把站点目录换到 /home/jaleo/www/mysite ,修改 /etc/nginx/conf.d/mysite.conf ,再打开网站,显示 404 了。
    cat /var/log/nginx/error.log ,发现有权限 denied 的日志
    但我看了 /home/jaleo/www/mysite 目录的权限,是 775 。
    我又试了其他目录,发现只要站点目录指向 /home/jaleo 下,就打不开页面。
    不知道还有什么地方没有配置好,请指点。
    22 条回复    2015-10-13 19:39:45 +08:00
    CodingPuppy
        1
    CodingPuppy  
       2015-10-12 11:24:02 +08:00
    头像不错~
    nonozone
        2
    nonozone  
       2015-10-12 11:25:39 +08:00
    除了权限,你还要看看你的文件归属啊...
    venster
        3
    venster  
       2015-10-12 11:29:18 +08:00
    setenforce 0 试试看
    yexiaoxing
        4
    yexiaoxing  
       2015-10-12 12:04:49 +08:00 via iPad
    目录是 775 那文件呢
    just1
        5
    just1  
       2015-10-12 12:41:19 +08:00 via Android
    不是 nginx.conf
    xdz0611
        6
    xdz0611  
       2015-10-12 14:19:37 +08:00   ❤️ 1
    不要把 web 目录指向 /home 目录, home 目录都是有权限限制的,默认情况下只有 owner 自己能访问。但是你的 nginx 目测是以 nginx 用户启动的,所以肯定不能访问啦。

    建议的 web 目录一般放在 /data/www 或者 /var/www 下哦,这样默认也不会有权限问题。
    zjengjie
        7
    zjengjie  
       2015-10-12 14:34:51 +08:00
    同问,之前我也遇到过,改了 owner ( www-data )也不行,后来不想折腾了,就让他在默认文件夹呆着了。
    raysonx
        8
    raysonx  
       2015-10-12 14:41:55 +08:00 via Android   ❤️ 1
    不建议把 web 目录放在 home 下。
    如果真要放的话,从 web 目录向根目录一层一层地检查 nginx 用户是否具有 r 权限和 x 权限。我估计是中间的某一层目录没有 x 权限所致
    ryd994
        9
    ryd994  
       2015-10-12 14:46:21 +08:00   ❤️ 1
    你 service nginx reload 了么?
    另外, nginx 需要对所有上级目录有 rx ,检查中间的
    jaleo
        10
    jaleo  
    OP
       2015-10-12 16:32:45 +08:00
    多谢指点 我晚上去检查下权限
    上面的几位说的有道理 站点最好不要放在 home 下
    varnotfound
        11
    varnotfound  
       2015-10-12 16:32:54 +08:00
    得看下 nginx 当前运行使用的用户对目录的权限,每级目录都看下
    我遇到只有中间一个目录没有权限,其他目录都有权限,文件访问不了的
    orFish
        12
    orFish  
       2015-10-12 16:49:07 +08:00
    注意下用户组
    nginx 的 user group 配置是否和 www 目录所属用户组一样。
    xierch
        13
    xierch  
       2015-10-12 17:50:56 +08:00   ❤️ 1
    除了检查 /home/jaleo/www/mysite 的权限
    还要检查 /home/jaleo/www 、/home/jaleo 和 /home 哦
    strahe
        14
    strahe  
       2015-10-12 19:53:38 +08:00
    一层层检查权限,也不建议你放这么深,我习惯的路径:/data/{www, server, logs, ssl, backup}
    你可以参考一下
    randyzhao
        15
    randyzhao  
       2015-10-12 19:57:42 +08:00
    用户问题
    lxy42
        16
    lxy42  
       2015-10-12 20:10:38 +08:00
    我也遇到过类似问题, nginx uwsgi django 部署在 centos 上,静态文件放在 /home/www/static/下, nginx 是以 nginx 用户运行的, nginx 用户添加到 www 的用户组中, static 的目录权限是 750 ,可是 nginx 就是访问不到静态文件。后来干脆把运行用户设为 www 。
    lxy42
        17
    lxy42  
       2015-10-12 20:31:04 +08:00
    就刚刚我把 nginx 的运行用户重新设为 nginx ,重启 nginx 服务后发现能正常访问 static 目录了。前后的区别是原来的 nginx 用户是没有设置登录密码的,现在我设置密码了,不知道只是不是主要原因?
    jaleo
        18
    jaleo  
    OP
       2015-10-12 20:36:54 +08:00
    @xierch 原来是 /home/jaleo 这个目录权限不够
    raysonx
        19
    raysonx  
       2015-10-12 20:52:14 +08:00 via iPad   ❤️ 1
    @lxy42 和密码没有关系,因为这个用户不需要登录。另外,不要允许 nginx 用户登录(这是默认的),否则你就等着有人扫 ssh 密码爆菊吧。在 /etc/passwd 里面把该用户的 shell 设置为 /sbin/nologin 禁止登录
    xiaoz
        20
    xiaoz  
       2015-10-12 20:54:41 +08:00 via Android
    看看用户权限呢, chown www:www 网站目录
    lxy42
        21
    lxy42  
       2015-10-12 21:03:10 +08:00
    @raysonx 谢谢提醒
    rootit
        22
    rootit  
       2015-10-13 19:39:45 +08:00
    明显是你把你的东西放到别人家了,人家肯定不让你访问。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2783 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 11:34 · PVG 19:34 · LAX 03:34 · JFK 06:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.