nginx 出现问题并从同一域下的多个目录提供服务

nginx 出现问题并从同一域下的多个目录提供服务

我已将 nginx 设置为从 /usr/share/nginx/html 提供服务,并且它运行良好。我还想将其添加到同一域中的 /home/user/public_html/map 提供服务。因此:

我的域名.com将获取 /usr/share/nginx/html 中的文件
my.domain.com/map将获取 /home/user/public_html/map 中的文件

使用以下配置(/etc/nginx/nginx.conf),它似乎会my.domain.com/map/map正如所注意到的:

2011/03/12 09:50:26 [error] 2626#0: *254 "/home/user/public_html/map/map/index.html" is forbidden (13: Permission denied), client: <edited ip address>, server: _, request: "GET /map/ HTTP/1.1", host: "<edited>"

我尝试了一些方法,但仍然无法让它配合,因此如果能提供任何帮助我将非常感激。

###############################################################################
#
# 这是主要的 Nginx 配置文件。  
#
###############################################################################

#-------------------------------------------------------------------------
# 主模块 - 涵盖基本功能的指令
#-------------------------------------------------------------------------

用户 nginx;
工作进程 1;

错误日志/var/log/nginx/error.log;

pid /var/run/nginx.pid;


#-------------------------------------------------------------------------
# 事件模块
#-------------------------------------------------------------------------

事件 {
    工作者连接1024;
}


#-------------------------------------------------------------------------
# HTTP 核心模块
#-------------------------------------------------------------------------

http {
    包括/etc/nginx/mime.types;
    默认类型应用程序/八位字节流;

    log_format 主要'$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    访问日志 /var/log/nginx/access.log 主要;
    发送文件;
    保持活动超时 65;    

    服务器 {
        听80;
        服务器名称 _;
        #access_log 日志/主机.access.log 主要;

        地点 / {
            根目录/usr/share/nginx/html;
            索引 index.html index.htm;
        }

        位置/地图{
            根/主页/用户/public_html/地图;
            索引 index.html index.htm;
        }

        错误页面 404 /404.html;
        位置 = /404.html {
            根目录/usr/share/nginx/html;
        }

        错误页面 500 502 503 504 /50x.html;
        位置 = /50x.html {
            根目录/usr/share/nginx/html;
        }
    }
    包括/etc/nginx/conf.d/*.conf;
}

答案1

root此处的问题在于指令。引自文档

注意:请记住,根目录仍会将目录附加到请求中,因此对“/i/top.gif”的请求不会在“/spool/w3/top.gif”中查找,就像在类似 Apache 的别名配置中可能发生的情况一样,其中位置匹配本身被删除。使用别名指令可实现类似 Apache 的功能。

基本上只root用于真实的根:如果内容位于/根目录,请使用根目录。如果内容要结束于子文件夹,请使用别名:

location  /map/ {
  alias  /home/user/public_html/map/;
}

还要检查 nginx 以哪个用户身份运行,并确保该用户可以访问/home/user/public_html/map

相关内容