使用 nginx 进行负载平衡的 geoserver 发生 ERR_TOO_MANY_REDIRECTS 错误

问题描述 投票:0回答:1

我正在尝试形成2个负载平衡的NginX Web服务器,它连接到2个Tomcat WAS服务器。 但是,当连接到具有上下文的地址时,通常会进行太多重定向,从而生成 ERR_TOO_MANY_REDIRECTS。

当我在 NginX 上游选项中仅映射 1 个 WAS 服务器时,不会发生这种情况,当我向根路径映射的 Web 应用程序发送请求时,也不会发生这种情况。

我想保留我的http和https连接,并保持我的上下文路径不变。(除非没有其他选择)

以下是我的服务器设置。(Tomcat和NginX)

我有 2 个 Tomcat 服务器正在运行,每个服务器都有 2 个 Web 应用程序,其上下文设置如下。(server.xml)

<Context docBase="UTIS_MAP_GATEWAY" path="/" reloadable="true"/>
<Context docBase="geoserver" path="/geoserver" reloadable="true"/>

并设置一些会话集群选项(server.xml)

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
          <Manager className="org.apache.catalina.ha.session.DeltaManager"
               expireSessionsOnShutdown="false"
               notifyListenersOnReplication="true"/>
          
          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
          
          <Membership className="org.apache.catalina.tribes.membership.McastService"
                              address="228.0.0.4"
                              port="45564"
                              frequency="500"
                              dropTime="3000"/>
               
          <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                              address="192.168.20.199"
                              port="4000"
                              autoBind="100"
                              selectorTimeout="5000"
                              maxThreads="6"/>

          <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
          <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
          </Sender>
               
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
          <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/>

          </Channel>
      </Cluster>

IP是~.~.~.198和199,所以我在nginx配置中设置了负载均衡。 gis 是启用站点的目录中的唯一文件。

# cat /etc/nginx/sites-enabled/gis
upstream gis-proxy {
    least_conn;
    server 192.168.20.198:8080;
    server 192.168.20.199:8080;
}
# cat /etc/nginx/includes/gis_location.conf
location / {
        proxy_pass      http://gis-proxy/;

        include /etc/nginx/proxy_params;
}
# cat /etc/nginx/proxy_params
proxy_pass_header Set-Cookie;
proxy_http_version 1.1;
proxy_set_header "Connection" "";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Scheme $scheme;

我想同时使用http和https,所以我设置了default.conf,如下所示。

# cat conf.d/default.conf
server {
        listen 80;
        listen [::]:80;
        server_name gis.utic.go.kr;

        listen 443 ssl;
        listen [::]:443 ssl;

        ssl_certificate         /home/utigis/ssl/_wildcard_.utic.go.kr_20230913BBCDC.crt.pem;
        ssl_certificate_key     /home/utigis/ssl/_wildcard_.utic.go.kr_20230913BBCDC.key.pem;
        ssl_protocols           TLSv1.2 TLSv1.3;
        ssl_ciphers             HIGH:MEDIUM:!SSLv2:!PSK:!SRP:!ADH:!AECDH:!EXP:!RC4:!IDEA:3DES;

        include /etc/nginx/includes/gis_location.conf;
}
# cat /etc/nginx/nginx.conf
...
http {
  ...
  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;
}

NginX 运行在 ~.~.~.198.

每当我连接到“~.198/geoserver/”时,它都会继续重定向,反复调用带或不带数字 GET 参数的上下文根。

Chrome DevTools network tab

我应该更改配置的哪一部分才能使 ERR_TOO_MANY_REDIRECTS 发生?

tomcat redirect load-balancing nginx-config geoserver
1个回答
0
投票

我必须在 Geoserver 全局设置中将 WebUI 设置设置为 DO_NOT_REDIRECT。

© www.soinside.com 2019 - 2024. All rights reserved.