List of the Experimental Features

Introduction

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

How to enable experimental features

To enable experimental features, 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 v2023.3.5, we 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 HTTP/3 server: [>=2023.3.8]

In v2023.3.8, we added experimental support for an HTTP/3 server. It can work with the ACME provider to generate certificates for the HTTP/3 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 an 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 can also generate test certificates manually and use them in the configuration file. To do that, use mkcert or certbot:

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

This command generates the client and server certificates for the localhost domain. You can 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"

You can use client certificates in your preferred HTTP/3 client. For example, use curl3 to test the HTTP/3 server:

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

Last updated

Was this helpful?