服务重定向时 Nginx 重写规则不起作用

服务重定向时 Nginx 重写规则不起作用

我有以下 nginx 规则

    server_name mydomain.com;

    location ^~ /geosamples/ {
       rewrite  ^/geosamples/(.*)$  /geoserver/$1  break;
       proxy_pass http://192.168.92.100:8088;
       proxy_connect_timeout 180s;
       proxy_read_timeout 240s;
    }

如果我访问 mydomain.com/geosamples/index.html 上的应用程序,它可以正常工作。

如果我访问它

mydomain.com/geosamples/

它被重定向到

mydomain.com/geoserver/index.html

显然不再起作用了!

我猜测 geoserver 应用程序正在将客户端重定向到这个有问题的 URL...

我该如何预防?任何帮助我都会很感激!

答案1

当上游服务器返回 3xx 响应时,您需要添加一条proxy_redirect指令来逆转您的操作。rewrite

尝试:

proxy_redirect http://example.com/geoserver/ http://example.com/geosamples/;

这个文件了解详情。

答案2

你只是不需要让事情变得过于复杂。

location ^~ /geosamples/ {
   proxy_pass http://192.168.92.100:8088/geoserver/;
   proxy_connect_timeout 180s;
   proxy_read_timeout 240s;
}

相关内容