nginx实现后端tomcat的负载均衡调度

9 篇文章 0 订阅
6 篇文章 0 订阅
本文档详细介绍了如何配置Nginx实现后端Tomcat的负载均衡,包括Nginx和Tomcat的安装,以及Nginx的配置步骤。在测试阶段遇到错误:The character [_] is never valid in a domain name。错误源于upstream配置名称包含下划线。解决方案是将名称中的下划线替换或删除,确保域名中不包含非法字符。
摘要由CSDN通过智能技术生成

在这里插入图片描述

1. Nginx编译安装

参见:
https://blog.csdn.net/qq_29974229/article/details/121266195

2. Tomcat 和JDK编译安装

参见:
https://blog.csdn.net/qq_29974229/article/details/121494218

3. Nginx配置

/apps/nginx/conf/nginx.conf

worker_processes  2;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream webserver {
        server 192.168.31.18:8080;
        server 192.168.31.28:8080;
    }
    server {
        listen       80;
        server_name  localhost;
        location / {
            proxy_pass http://webserver;
        }
    }
}

3.2 启动Nginx

nginx -t
nginx

4. 测试

4.1 测试后端服务器页面

其实这步还是很关键的,首先要保证后端服务器是可以被正常访问的,再去配置和测试负载均衡.很多新手都会直接去测负载均衡,一旦出错,错误原因调查起来就会很复杂.
在这里插入图片描述

4.2 通过Nginx代理

在这里插入图片描述

4.3 使用windows浏览器测试

在这里插入图片描述
在这里插入图片描述

5. 报错

今天配置的时候又碰到了个报错.
报错内容如下:

类型 异常报告

消息 The character [_] is never valid in a domain name.

描述 由于被认为是客户端对错误(例如:畸形的请求语法、无效的请求信息帧或者虚拟的请求路由),服务器无法或不会处理当前请求。

例外情况

java.lang.IllegalArgumentException: The character [_] is never valid in a domain name.
	org.apache.tomcat.util.http.parser.HttpParser$DomainParseState.next(HttpParser.java:994)
	org.apache.tomcat.util.http.parser.HttpParser.readHostDomainName(HttpParser.java:890)
	org.apache.tomcat.util.http.parser.Host.parse(Host.java:66)
	org.apache.tomcat.util.http.parser.Host.parse(Host.java:40)
	org.apache.coyote.AbstractProcessor.parseHost(AbstractProcessor.java:303)
	org.apache.coyote.http11.Http11Processor.prepareRequest(Http11Processor.java:1049)
	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:601)
	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1650)
	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
	org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	java.lang.Thread.run(Thread.java:748)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看

在这里插入图片描述

5.1 造成错误的原因

在配置upstream时,名称带了下划线( _ ) 导致了The character [_] is never valid in a domain name.的报错
配置如下:
在这里插入图片描述

5.2 解决问题

导致报错的原因既然知道了,那么解决也是很简单的,就是去掉_或者用-代替
个人建议去直接去掉.
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值