我正在尝试形成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 参数的上下文根。
我应该更改配置的哪一部分才能使 ERR_TOO_MANY_REDIRECTS 发生?
我必须在 Geoserver 全局设置中将 WebUI 设置设置为 DO_NOT_REDIRECT。