Closed
Description
Describe the bug
当用户发布请求时候,比如发布如下配置,会有异常:
nacos.log中的异常日志:
020-08-24 15:34:31,074 INFO Error parsing HTTP request header
Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:467)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:294)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:791)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
配置:
{
"type": "sharding",
"name": "abcdef_ghijkmln_shard",
"endpoints": [
{
"url": "jdbc:mysql://abc-mysql-test-:3306/abcdef_ghijkmln_0?user=abcdef&password=abcdef123",
"roles": ["write", "read"],
"shard": "0"
},
{
"url": "jdbc:mysql://abc-mysql-test-:3306/abcdef_ghijkmln_1?user=abcdef&password=abcdef123",
"roles": ["write", "read"],
"shard": "1"
},
{
"url": "jdbc:mysql://abc-mysql-test-:3306/abcdef_ghijkmln_0?user=abcdef&password=abcdef123",
"roles": ["read"],
"shard": "0"
},
{
"url": "jdbc:mysql://abc-mysql-test-:3306/abcdef_ghijkmln_1?user=abcdef&password=abcdef123",
"roles": ["read"],
"shard": "1"
}
],
"pools": [
{
}
],
"extra": {
"bindingTables": [ "ghijkmln_mygod", "ghijkmln_mygod_delivery", "team_student", "ghijkmln_mygod_tx_record", "ghijkmln_mygod_lid", "team_student_lid" ],
"broadcastTables": [],
"tableRules": [
{
"logicalTable": "ghijkmln_mygod",
"actualDataNodes": "abcdef_ghijkmln_shard0.ghijkmln_mygod_${0..255}, abcdef_ghijkmln_shard1.ghijkmln_mygod_${256..511}",
"databaseSharding": {
"type": "inline",
"params": {
"column": "mmmkkekeke",
"expression": "abcdef_ghijkmln_shard${mmmkkekeke % 2}"
}
},
"tableSharding": {
"type": "inline",
"params": {
"column": "mmmkkekeke",
"expression": "ghijkmln_mygod_${(mmmkkekeke % 2) * 256 + (mmmkkekeke % 256)}"
}
},
"keyGeneratorConfig": {
"column": "1",
"type": "NONE"
}
},
{
"logicalTable": "ghijkmln_mygod_lid",
"actualDataNodes": "abcdef_ghijkmln_shard0.ghijkmln_mygod_lid_${0..255}, abcdef_ghijkmln_shard1.ghijkmln_mygod_lid_${256..511}",
"databaseSharding": {
"type": "inline",
"params": {
"column": "mmmkkekeke",
"expression": "abcdef_ghijkmln_shard${mmmkkekeke % 2}"
}
},
"tableSharding": {
"type": "inline",
"params": {
"column": "mmmkkekeke",
"expression": "ghijkmln_mygod_lid_${(mmmkkekeke % 2) * 256 + (mmmkkekeke % 256)}"
}
},
"keyGeneratorConfig": {
"column": "1",
"type": "NONE"
}
},
{
"logicalTable": "team_student",
"actualDataNodes": "abcdef_ghijkmln_shard0.team_student_${0..255}, abcdef_ghijkmln_shard1.team_student_${256..511}",
"databaseSharding": {
"type": "inline",
"params": {
"column": "mmmkkekeke",
"expression": "abcdef_ghijkmln_shard${mmmkkekeke % 2}"
}
},
"tableSharding": {
"type": "inline",
"params": {
"column": "mmmkkekeke",
"expression": "team_student_${(mmmkkekeke % 2) * 256 + (mmmkkekeke % 256)}"
}
},
"keyGeneratorConfig": {
"column": "1",
"type": "NONE"
}
},
{
"logicalTable": "team_student_lid",
"actualDataNodes": "abcdef_ghijkmln_shard0.team_student_lid_${0..255}, abcdef_ghijkmln_shard1.team_student_lid_${256..511}",
"databaseSharding": {
"type": "inline",
"params": {
"column": "mmmkkekeke",
"expression": "abcdef_ghijkmln_shard${mmmkkekeke % 2}"
}
},
"tableSharding": {
"type": "inline",
"params": {
"column": "mmmkkekeke",
"expression": "team_student_lid_${(mmmkkekeke % 2) * 256 + (mmmkkekeke % 256)}"
}
},
"keyGeneratorConfig": {
"column": "1",
"type": "NONE"
}
},
{
"logicalTable": "ghijkmln_mygod_delivery",
"actualDataNodes": "abcdef_ghijkmln_shard0.ghijkmln_mygod_delivery_${0..255}, abcdef_ghijkmln_shard1.ghijkmln_mygod_delivery_${256..511}",
"databaseSharding": {
"type": "inline",
"params": {
"column": "mmmkkekeke",
"expression": "abcdef_ghijkmln_shard${mmmkkekeke % 2}"
}
},
"tableSharding": {
"type": "inline",
"params": {
"column": "mmmkkekeke",
"expression": "ghijkmln_mygod_delivery_${(mmmkkekeke % 2) * 256 + (mmmkkekeke % 256)}"
}
},
"keyGeneratorConfig": {
"column": "1",
"type": "NONE"
}
},
{
"logicalTable": "ghijkmln_mygod_tx_record",
"actualDataNodes": "abcdef_ghijkmln_shard0.ghijkmln_mygod_tx_record_${0..255}, abcdef_ghijkmln_shard1.ghijkmln_mygod_tx_record_${256..511}",
"databaseSharding": {
"type": "inline",
"params": {
"column": "mmmkkekeke",
"expression": "abcdef_ghijkmln_shard${mmmkkekeke % 2}"
}
},
"tableSharding": {
"type": "inline",
"params": {
"column": "mmmkkekeke",
"expression": "ghijkmln_mygod_tx_record_${(mmmkkekeke % 2) * 256 + (mmmkkekeke % 256)}"
}
},
"keyGeneratorConfig": {
"column": "1",
"type": "NONE"
}
}
],
"dataSourceName": "ghijkmlnmygodShardDs"
}
}
Expected behavior
Acutally behavior
How to Reproduce
Desktop (please complete the following information):
nacos版本1.3.0
Additional context
解决办法:在server端添加
@Configuration
public class TomcatConfig {
@Bean
public TomcatServletWebServerFactory webServerFactory() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addConnectorCustomizers((Connector connector) -> {
connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
});
return factory;
}
}
在项目配置文件中添加配置
server:
max-http-header-size: 10000000