Tomcat报错:一台服务器上部署多个tomcat报错 “字符[_]在域名中永远无效。”

实验环境: 在nginx上用2个tomcat做负载均衡,负载代码如下:

    upstream tomcat_local {
    
    
     server 192.168.8.186:8080 weight=1;
     server 192.168.8.186:8081 weight=2;
   }
server {
    
    
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location / {
    
    
            root html;
            proxy_pass http://tomcat_local;
        #    proxy_set_header Host $host:$server_port;
        #    proxy_set_header X-Real-IP $remote_addr;
        #    proxy_set_header REMOTE-HOST $remote_addr;
        #    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

访问http://192.168.8.186/会报错!!!
报错内容:
在这里插入图片描述
在这里插入图片描述
报错原因: 域名tomcat_local中有一个下划线_,而proxy_set_header的Host未设置的话,就会直接拿proxy_pass对应的值,也就是tomcat_local。但是下划线对域名来说是非法的,故会报错400错误的请求。
解决方法:
①法1:把下划线去掉,如域名写成tomcatlocal
②法2:修改反向代理配置如下:

        location / {
    
    
            root html;
            proxy_pass http://tomcat_local;
            proxy_set_header Host $host:$server_port;    # nginx服务器的主机名和端口号,不使用tomcat_local
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

猜你喜欢

转载自blog.csdn.net/weixin_36522099/article/details/108269440