如何配置 Nginx 以提供来自具有不同根路径的两个子文件夹的内容?

Susan Sarandon
发布: 2024-11-23 00:52:12
原创
344 人浏览过

How to Configure Nginx to Serve Content from Two Subfolders with Different Root Paths?

子文件夹的 Nginx 位置配置

在本文中,我们将探讨如何配置 Nginx 来提供来自两个子文件夹的内容,其中一个位于根路径和特定 URL 处的另一个路径。

考虑以下目录结构:

/var/www/myside/
├── static
├── manage
登录后复制

我们的目标是使 /static 文件夹可通过根 URL(例如 http://example.org/)访问,并且 /manage 文件夹可通过 /manage 访问(例如 http ://example.org/manage)。在本例中, /manage 文件夹包含 Slim 的 PHP 框架代码,实际的 PHP 文件位于 /var/www/mysite/manage/public/index.php。

Nginx 配置

为了实现这一点,我们可以使用 Nginx 的 location 指令。这是一个可能的配置:

server {
  listen 80;
  server_name example.org;
  error_log /usr/local/etc/nginx/logs/mysite/error.log;
  access_log /usr/local/etc/nginx/logs/mysite/access.log;
  root /var/www/mysite;

  location / {
    root /var/www/mysite/static;
    index index.html;
  }

  location /manage {
    alias /var/www/mysite/manage/public;
    index index.php;

    if (!-e $request_filename) {
      rewrite ^ /manage/index.php last;
    }

    location ~ \.php$ {
      if (!-f $request_filename) {
        return 404;
      }
      fastcgi_pass 127.0.0.1:9000;

      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $request_filename;
      fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    }
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_pass 127.0.0.1:9000;

    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME $fastcgi_script_name;
    fastcgi_index index.php;
  }
}
登录后复制

说明

让我们分解配置:

  • 第一个位置块(/ ): 指定应从根目录提供 /static 文件夹URI。
  • 第二个位置块 (/manage): 使用别名指令将 /manage URI 映射到 /var/www/mysite/manage/public 目录。
  • 第三个位置块(/manage 内的位置 ~ .php$): 配置 PHP 文件处理/manage 文件夹。
  • 最终位置块(服务器级别的位置 ~ .php$): 配置 /static 文件夹中的 PHP 文件处理。

别名与 root 的使用

使用别名时,Nginx 从以下位置提供文件指定目录,同时保留原始 URI。这对我们的目的很有用,因为我们希望 /manage URI 指向 /var/www/mysite/manage/public 目录。

相反,root 更改位置块的根目录,因此它不适合我们想要从不同位置提供不同子文件夹的场景。

重写规则index.php

重写规则可确保对 /manage 文件夹中不存在的文件的请求重定向到 index.php。这允许 Slim 的 PHP 应用程序处理请求。

PHP 文件处理

PHP 文件处理的两个位置块都包含运行 PHP 脚本的必要配置,例如 FastCGI设置和变量。 fastcgi_pass 指令将 PHP 请求定向到 PHP FastCGI 服务器。

最后注意事项

请确保您的 PHP FastCGI 服务器正在运行并正确配置。此设置应该允许您正确地提供 /static 和 /manage 子文件夹中的内容。

以上是如何配置 Nginx 以提供来自具有不同根路径的两个子文件夹的内容?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板