List of the Experimental Features

Introduction

Starting from the RR v2023.3.4 release, we have introduced a new feature called Experimental Features. This feature allows you to try out new features that are not yet ready for production use.

How to enable experimental features

To enable experimental features, you need to run RR with the -e (--enable-experimental) flag. For example:

./rr serve -e

Or:

./rr serve --enable-experimental

List of experimental features

Support for loading envfiles in the .rr.yaml: [>= v2023.3.5]

In the v2023.3.5 added experimental support for loading envfiles in the .rr.yaml configuration file. .env file should be in the same directory as the .rr.yaml file.

Sample .rr.yaml file:

.rr.yaml
version: "3"
envfile: .env

Support for the HTTP3 server: [>=2023.3.8]

In the v2023.3.8 we added experimental support for the HTTP3 server. It can work with the ACME provider to generate certificates for the HTTP3 server automatically.

Sample .rr.yaml file:

.rr.yaml
version: "3"

server:
  command: "php worker.php"
  relay: pipes

http:
  address: 127.0.0.1:15389
  pool:
    num_workers: 2
  http3:
    address: 127.0.0.1:34555
    key: "localhost+2-key.pem"
    cert: "localhost+2.pem"

Or if you use ACME provider:

.rr.yaml
version: "3"

server:
  command: "php worker.php"
  relay: pipes

http:
  address: 127.0.0.1:15389
  pool:
    num_workers: 2
  http3:
    address: 127.0.0.1:34555
    key: "localhost+2-key.pem"
    cert: "localhost+2.pem"
  ssl:
    acme:
      certs_dir: rr_le_certs
      email: you-email-here@email
      alt_http_port: 80
      alt_tlsalpn_port: 443
      challenge_type: http-01
      use_production_endpoint: false
      domains:
        - your-cool-domains.here

You may also generate testing certificates manually and use them in the configuration file. To do that, you may use mkcert or certbot:

mkcert -install && mkcert -client localhost 127.0.0.1 ::1 && mkcert localhost 127.0.0.1 ::1

This command will generate the client and server certificates for the localhost domain. You may use them in the configuration file:

.rr.yaml
version: "3"

server:
  command: "php worker.php"
  relay: pipes

http:
  address: 127.0.0.1:15389
  pool:
    num_workers: 2
  http3:
    address: 127.0.0.1:34555
    key: "localhost+2-key.pem" # <- generated by mkcert: "localhost+2-key.pem"
    cert: "localhost+2.pem" # <- generated by mkcert: "localhost+2.pem"

Client certificates might be used in your favorite http3 client. For example, you may use curl3 to test the HTTP3 server:

curl3 --http3 -k --cert localhost+2.pem --key localhost+2-key.pem https://127.0.0.1:34555/

Last updated