栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

nginx实现后端tomcat的负载均衡调度
  • 1. Nginx编译安装
  • 2. Tomcat 和JDK编译安装
  • 3. Nginx配置
    • 3.2 启动Nginx
  • 4. 测试
    • 4.1 测试后端服务器页面
    • 4.2 通过Nginx代理
    • 4.3 使用windows浏览器测试
  • 5. 报错
    • 5.1 造成错误的原因
    • 5.2 解决问题

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 解决问题

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590966.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号