Skip to content

linux-china/http2-java-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HTTP 2.0 Server Demo

Spring Boot App with HTTP/2 enabled

HTTP Client

User mkcert to produce pkcs12 keystore file

mkcert -pkcs12 localhost

HTTP/2 over TCP (h2c)

All four embedded web containers now support HTTP/2 over TCP (h2c) without any manual customization. To enable h2c, set server.http2.enabled is true and leave server.ssl.enabled set to false (its default value).

Caddy Server reverse_proxy configuration:

reverse_proxy {
    to http://127.0.0.1:2012
    transport http {
        versions h2c
    }
}

UDS support - Unix Domain Sockets

  • Add dependency
       <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-transport-native-kqueue</artifactId>
            <version>${netty.version}</version>
            <classifier>osx-x86_64</classifier>
        </dependency>
  • Create NettyUdsConfig.java
import io.netty.channel.unix.DomainSocketAddress;
import org.springframework.boot.web.embedded.netty.NettyReactiveWebServerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Collections;

/**
 * Netty UDS configuration
 */
@Configuration
public class NettyUdsConfig {

    @Bean
    public NettyReactiveWebServerFactory factory() {
        NettyReactiveWebServerFactory factory = new NettyReactiveWebServerFactory();
        factory.setServerCustomizers(Collections.singletonList(httpServer -> httpServer.bindAddress(() -> new DomainSocketAddress("/tmp/test.sock"))));
        return factory;
    }
}
  • Start server and test
curl -GET --unix-socket /tmp/test.sock http://localhost/

Reference

About

Spring Boot with HTTP/2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published