server.https

  • Type:
import type { ServerOptions } from 'node:https';
import type { SecureServerSessionOptions } from 'node:http2';

type Https = ServerOptions | SecureServerSessionOptions;
  • Default: undefined

Configure HTTPS options to enable HTTPS server. When enabled, HTTP server will be disabled.

HTTP:

  ➜ Local: http://localhost:3000/
  ➜ Network: http://192.168.0.1:3000/

HTTPS:

  ➜ Local: https://localhost:3000/
  ➜ Network: https://192.168.0.1:3000/
TIP

When HTTPS is enabled, Rsbuild uses an HTTP/2 server by default. However, if you enable server.proxy, the dev server falls back to HTTP/1 because its underlying dependency, http-proxy, does not support HTTP/2.

Set certificate

You can manually pass in the certificate and the private key required in the server.https option. This parameter will be directly passed to the createServer method of the https module in Node.js.

For details, please refer to https.createServer.

import fs from 'node:fs';

export default {
  server: {
    https: {
      key: fs.readFileSync('certificates/private.pem'),
      cert: fs.readFileSync('certificates/public.pem'),
    },
  },
};
TIP

The certificates used for local development are typically generated using mkcert. Please read "How to use HTTPS for local development" to learn how to use it.

Self-signed Certificate

For basic configuration requirements, you can add the @rsbuild/plugin-basic-ssl plugin, which will automatically create a self-signed certificate and set server.https option by default.

import { pluginBasicSsl } from '@rsbuild/plugin-basic-ssl';

export default {
  plugins: [pluginBasicSsl()],
};