运行 HTTPS=true 的 Docusaurus 产量 ERR_SSL_PROTOCOL_ERROR

Running Docusaurus with HTTPS=true yields ERR_SSL_PROTOCOL_ERROR

我们正在制作一个 V2 Docusaurus 网站。

在服务器上建好网站后,我们就可以用https了。这是my_server_block.conf的一部分:

server {
  listen  3001 ssl;

  ssl_certificate      /certs/server.crt;
  ssl_certificate_key  /certs/server.key;

  ssl_session_cache    shared:SSL:1m;
  ssl_session_timeout  5m;

  ssl_ciphers  HIGH:!aNULL:!MD5;
  ssl_prefer_server_ciphers  on;

  location / {
    proxy_pass http://localhost:3002;
    proxy_redirect off;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Ssl on;
  }
}

在本地主机中,http 有效。但是,我们现在需要在 localhost 中测试 https。但是 https returns 一个错误,尽管我是通过 HTTPS=true yarn start: This site can’t provide a secure connection localhost sent an invalid response. ERR_SSL_PROTOCOL_ERROR:

开始的

有谁知道我应该怎么做才能让 https 在本地主机上工作?

编辑 1: 我试过 HTTPs=true SSL_CRT_FILE=certs/server.crt SSL_KEY_FILE=certs/server.key yarn starthttps://localhost:3001 仍然返回同样的错误。请注意,certs/server.crtcerts/server.crt 是通过 ngnix 使 https 在我们的生产服务器中工作的文件:

server {
  listen  3001 ssl;

  ssl_certificate      /certs/server.crt;
  ssl_certificate_key  /certs/server.key;

Docusaurus 2 在内部使用 Create React App 的实用程序,您可能需要根据 instructions here 指定证书和密钥的路径。我不熟悉服务器配置,所以我无法在这方面为您提供帮助。

也许这个答案会有帮助 -

您正在使用 Nginx,因此请将其用于 SSL 卸载(您当前的配置)并且不要在 Docusaurus 站点上启动 https。所以浏览器中的用户将使用 https,但 Docusaurus 将使用 http。

如果您在 Docusaurus 站点上启动 https,并且您将通过 http proxy_pass http://localhost:3002; 进行代理传递,那么这是一个明显的问题 - 使用 http 协议连接到 https 端点。当然,您可以使用 https 协议 proxy_pass https://localhost:3002; proxypass,但这可能需要更高级的配置。保持简单并在 Nginx 中使用 SSL 卸载。

react-dev-utils@^v9.0.3 中本地主机上的 https 支持存在问题,它是 docusaurus 的依赖项。

https://github.com/facebook/create-react-app/issues/8075

https://github.com/facebook/create-react-app/pull/8079

在react-dev-utils@10.1.0中修复