Centos下Apache/Nginx使用Symlink访问外部目录出现403

错误状况:

  • 在Aapche的document root 下创建软链到其他目录时, 无法从浏览器访问, 返回403错误,日志显示错误13: Permission denied
  • Nginx配置了location 指向/etc/nginx以外的其他目录,也无法从浏览器访问, 返回403错误,日志显示错误13: Permission denied

主要检查两点

  • 软链目标目录的每一级, 都要对所有人开放执行权限, 即对目录 chmod -R 711
  • 检查selinux的状态 /usr/sbin/getenforce, 如果是enforcing, 执行 setenforce 0 关闭selinux试试能不能访问, 如果能的话, 就是目录的安全策略问题. 需要对目标目录设置

用nginx的工作进程对应的用户, 去检查是否能访问对应目录, 这个同样适用于正常文件系统设置为root directory时出现13: Permission denied的情况

# 如果 Permission denied 无法访问, 则在 nginx 里一样无法访问
$ sudo -u milton namei /home/tomcat/html/pronto-demo/index.html
f: /home/tomcat/html/pronto-demo/index.html
 d /
 d home
 d tomcat
   html - Permission denied

这样的才可以访问

$ sudo -u milton namei /home/tomcat/html/pronto-demo/index.html
f: /home/tomcat/html/pronto-demo/index.html
 d /
 d home
 d tomcat
   html - Permission denied

修改权限

chcon -R -t httpd_sys_content_t FOLDER_NAME/
# 以及(有些情况不需要)
setsebool httpd_read_user_content=1 

错误状况:

  • Nginx中配置了upstream,通过proxy_pass 访问本机其他端口时,返回403,日志显示错误 (13: Permission denied) while connecting to upstream

检查

  • 如果关闭selinux就能访问的话,说明是selinux的问题,需要设置
# P参数代表permanent
setsebool -P httpd_can_network_connect 1

参考

posted on 2014-11-20 19:49  Milton  阅读(478)  评论(0编辑  收藏  举报

导航