gpt4 book ai didi

Nginx 具有不同根的多个位置

转载 作者:行者123 更新时间:2023-12-02 07:32:46 25 4
gpt4 key购买 nike

我的 nginx 配置非常简单,里面有 3 个位置。他们每个人都有自己的根目录+我将来应该能够轻松添加另一个根目录。

我想要什么:

请求/admin =>位置^/admin(/|$)

请求/admin/ =>位置^/admin(/|$)

请求/admin/blabla =>位置^/admin(/|$)

请求/client =>位置^/client(/|$)

请求/client/ =>位置^/client(/|$)

请求/client/blabla =>位置^/client(/|$)

请求/blabla => 位置/

请求/admin-blabla =>位置/

请求/client-blabla =>位置/

实际结果:

所有请求都会发送到位置 /

我使用别名、try_files、根和正则表达式的不同组合尝试了来自文档、stackoverflow 和其他来源的许多不同建议,但没有任何效果。

仅当我尝试仅使用 return 200 'admin';return 200 'front' 时,它才按预期工作。

最小配置:

server {
listen 80;
index index.html;

location / {
root /var/www/html/www_new/front;
try_files $uri $uri/ /index.html;
}

location ~ ^/admin(/|$) {
root /var/www/html/www_new/admin;
try_files $uri $uri/ /index.html;
}

location ~ ^/client(/|$) {
root /var/www/html/www_new/client;
try_files $uri $uri/ /index.html;
}
}

目录结构:

  • /管理员
  • /客户
  • /前面

谢谢

最佳答案

当您更改根目录时,它仍然会包含目录名称,因此您只需设置 location/ 的根目录即可。您也不需要在 /admin 上使用任何额外的正则表达式,因为位置修饰符 ~ 已经告诉 nginx '任何开头的内容'。

这适用于您的用例:

server {
listen 80;
index index.html;

location / {
root /var/www/html/www_new/front;
try_files $uri $uri/ /index.html;
}

location ~ ^/admin {
root /var/www/html/www_new; # the directory (/admin) will be appended to this, so don't include it in the root otherwise it'll look for /var/www/html/www_new/admin/admin
try_files $uri $uri/ /admin/index.html; # try_files will need to be relative to root
}
}

关于Nginx 具有不同根的多个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44478708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com