![Nginx - 如何在不同的目录中使用 root 设置项目](https://linux22.com/image/675706/Nginx%20-%20%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E7%9B%AE%E5%BD%95%E4%B8%AD%E4%BD%BF%E7%94%A8%20root%20%E8%AE%BE%E7%BD%AE%E9%A1%B9%E7%9B%AE.png)
我刚刚开始学习 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; }