Nginx服务器块

Nginx服务器块,nginx,server,Nginx,Server,为什么大家,, 我对nginx服务器块有一个小问题,我希望这里的人知道解决方案 我的配置如下所示: server { listen 80; server_name example.com www.example.com; return 301 https://www.example.com; } server{ listen 80; server_name *.example.com; return 301 https://$host$reque

为什么大家,, 我对nginx服务器块有一个小问题,我希望这里的人知道解决方案

我的配置如下所示:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://www.example.com;
}

server{
    listen 80;
    server_name *.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name .example.com;
...
}
因此,第一个块是正常的http重定向到https,第二个块是捕获子域,第三个块是位置块所在的位置,等等

我的问题是,当第二个块捕获到请求时,我希望将/admin添加到URL,这样它将是subdomain.example.com/admin,但我必须检查它是否已经有/admin,这样我就不会得到类似subdomain.example.com/admin/admin的内容

我尝试了server_name*.example.com$和server_name~.example.com=.*然后如果$id=和数百个组合,没有得到任何有用的结果


这里有人遇到过类似的问题并解决了吗?

代码片段本身并不是很有用。请解释代码的作用,你为什么这样写,以及你希望它如何工作。对不起,我在阅读你的问题之前删除了我的问题,我设法使它工作,这显然是我的某种错误
server {
    listen 80;
    server_name *.example.com;
    if ($request_uri !~ ^/admin/) { 
        return 301 https://$host/admin$request_uri;
    }
    return 301 https://$host$request_uri;
}