NGINX 将 https 重定向到 https + /location 获取循环重定向

NGINX redirect https to https + /location getting loop redirect

我正在尝试使用 nginx 服务器部署我的 angular 应用程序。我遇到的问题是,当我访问该网站时,我需要重定向到特定位置,在这种情况下,我需要重定向到我的域。com/shop,当我进入该站点时,它会陷入循环然后开始输入 mydomain.com//shop/shop/shop/shop/shop......

这是我的代码。

  server {
    listen 443 ssl;

    ssl_certificate C:/nginx/ssl/cc.crt;
    ssl_certificate_key C:/nginx/ssl/pkc.key;

    server_name  mydomain.com www.mydomain.com;
    return 301 https://$host$request_uri/shop;
} 

server {
    listen       443 ssl;

    client_max_body_size 200M;

    ssl_certificate C:/nginx/ssl/cc.crt;
    ssl_certificate_key C:/nginx/ssl/pkc.key;

    server_name  mydomain.com www.mydomain.com;

    location / {
        root   html/myApp;       
        try_files $uri $uri/ /index.html;
    }

    location /api/ {
        client_max_body_size 200M;
        
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        proxy_pass https://127.0.0.1:4000/;
        proxy_redirect off;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

我该如何解决?提前致谢

您有两个 server 块,它们具有相同的 listenserver_name。第二个块作为重复项被忽略。

您需要删除第一个 server 块并将重定向规则放入第二个块。

例如:

location = / { 
    return 301 /shop; 
}