我想使用 nginx 将一个位置仅用于根 URL(https://example.com/) 并从不同位置提供所有其他文件。最终我想使用它在代理上/代理之前进行身份验证,但最初我只是尝试使用简单的文件位置。
根据文档,我使用了两个位置块:
server {
listen 443 ssl;
ssl_certificate /etc/nginx/cert.pem;
ssl_certificate_key /etc/nginx/cert.key;
location = / {
root /usr/share/nginx/html;
index index.html;
}
location / {
root /usr/share/nginx/html2;
}
}
但是对 https:// example.com/ 的请求得到的是 /usr/share/nginx/html2/index.html 而不是 /usr/share/nginx/html/index.html
同样地,我也尝试过:
location = / {
root /usr/share/nginx/html;
index index.html;
}
location ~* ^/.* {
root /usr/share/nginx/html2;
}
但我得到了相同的结果。
有没有直接的方法来实现这个功能?
答案1
这是因为 index 指令将进行内部重定向,/index.html
因此它与第二个 location 块匹配。将第一个块更改为:
location ~ ^/(index\.html)?$ {
root /usr/share/nginx/html;
index index.html;
}