运行 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 start
,https://localhost:3001
仍然返回同样的错误。请注意,certs/server.crt
和 certs/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中修复
我们正在制作一个 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 start
,https://localhost:3001
仍然返回同样的错误。请注意,certs/server.crt
和 certs/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中修复