如何调整NACOS内置TOMCAT请求头配置

问题背景:工作总是遇到意外的难题,NACOS的数据库竟然被不小心释放掉了且没有备份数据,而系统依靠缓存还能运行,于是用/v1/cs/configs查询接口把配置遍历下载重新备份解决了这个问题,当时发现/v1/cs/configs修改接口还没掌握,于是打算在有空的时候来动手实践下。

步骤如下:

1.github下载nacos指定版本V1.1.0代码 地址:https://github.com/alibaba/nacos/tree/1.1.0

2.在任意一个模块代码中pom.xml中查看有无

<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
</dependency>

    在模块中添加WebServerFactoryCustomizer<TomcatServletWebServerFactory>实现类,其中有tomcat请求头大小等的设置

import java.io.File;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.valves.AccessLogValve;
import org.apache.coyote.http11.Http11NioProtocol;
import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.stereotype.Component;


@Component
public class MyWebServerFactoryCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        factory.setPort(8888);//tomcat端口
        factory.setBaseDirectory(new File("d:/temp/tomcat"));//缓存路径
        factory.addContextValves(getLogAccessLogValue());//设置日志
        factory.addConnectorCustomizers(new MyTomcatConnectorCustomizer());//tomcat自定义访问连接
    }
    
    private AccessLogValve getLogAccessLogValue(){
        AccessLogValve log=new AccessLogValve();
        log.setDirectory("d:/temp/logs");//日志路径
        log.setEnabled(true);//启用日志
        log.setPattern("common");//输入日志格式
        log.setPrefix("springboot-access-log");//日志名称
        log.setSuffix(".txt");//日志后缀
        return log;
    }

}

class MyTomcatConnectorCustomizer implements TomcatConnectorCustomizer{

    @Override
    public void customize(Connector connector) {
        Http11NioProtocol protocal=(Http11NioProtocol)connector.getProtocolHandler();
        protocal.setMaxConnections(20000);//最大连接数
        protocal.setMaxThreads(500);//最大线程数
        protocal.setMaxHttpHeaderSize(20480000);//请求头大小
    }
    
}

3.执行maven打包命令

mvn -Prelease-nacos -Dmaven.test.skip=true -Dcheckstyle.skip=true -Dpmd.skip=true -Drat.skip=true clean install -U

最后用postMan访问结果如下(需要注意下tomcat在V7.0.73 之后有请求头的RFC3896字符校验,参数content需要encode)

相关博客:

       1.Nacos打包部署详解(以身试坑)-爱码网

       2. (023)Spring Boot之修改内嵌tomcat的3种方式 - 走看看

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值