我已将 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