1

我们正在制作一个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;
  }
}

在 localhost 中,http 有效。但是,我们现在需要在 localhost 中测试 https。但是 https 返回一个错误,虽然我是从HTTPS=true yarn start:开始This site can’t provide a secure connection localhost sent an invalid response. ERR_SSL_PROTOCOL_ERROR

在此处输入图像描述

有谁知道我应该怎么做才能使 https 在 localhost 中工作?

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

server {
  listen  3001 ssl;

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

3 回答 3

1

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

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

于 2020-04-15T18:59:26.967 回答
0

react-dev-utils@^v9.0.3 中 localhost 的 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 中修复

于 2020-04-18T17:05:04.247 回答
0

Docusaurus 2 在内部使用 Create React App 的实用程序,您可能需要按照此处的说明指定证书和密钥的路径。我不熟悉服务器配置,所以我无法帮助你。

也许这个答案会有所帮助-如何使用 create-react-app 提供 SSL 证书?

于 2020-04-13T07:22:54.087 回答