Nginx - 如何在不同的目录中使用 root 设置项目

Nginx - 如何在不同的目录中使用 root 设置项目

我刚刚开始学习 Web 开发和服务器管理,我在 Raspberry Pi 上设置了一个简单的 nginx Web 服务器。目前,我的服务器仅从一个目录提供文件/srv/http/nginx

我希望能够做的是进行设置,以便一个 urlpi.local/blog转到/srv/http/pelican/output,而另一个 urlpi.local/something.html转到原始目录。

我知道我应该location在 nginx 配置中使用块,但我似乎无法让它们工作。我现在有的是:

server {
    listen 80;
    server_name localhost;
    index index index.html index.php;

    location / {
        root /srv/http/nginx;
    }

    location /blog {
        root /srv/http/pelican/output;
    }
}

但是,当我转到时pi.local/blog,我收到类似这样的错误/srv/http/pelican/output/blog no such file or directory。我想我明白为什么会发生这种情况,但是创建我所描述的行为的正确方法是什么?

答案1

blog您忘记重写 URL,因为如果不重写,Web 服务器确实会在文档根目录中查找:

location /blog { rewrite ^/blog(.*)$ /$1; root /srv/http/pelican/output; }

相关内容