我已经切换到 https,现在我的应用程序无法连接到我的 GraphQL API(但 GraphQL Playground 可以在浏览器中工作)



我曾经使用以下url将我的应用程序(Next、React、ApolloClient(连接到我的后端(ApolloServer(:http://167.99.145.82:4020/graphql,它成功了。

现在我已经切换到https,GraphQL Playground仍然可以在浏览器中工作(https://sketchdaily.club/graphql),但是当客户端(https://sketchdaily.vercel.app/)尝试连接到它,它返回[Network error]: TypeError: Failed to fetch.

为什么会发生这种情况?

我的nginx配置:

server {
listen 80;
listen [::]:80;
server_name sketchdaily.club www.sketchdaily.club;
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/sketchdaily.club/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/sketchdaily.club/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location / {
proxy_pass http://0.0.0.0:4020;
}
}

我做错了什么?

您的证书已为域sketchdaily.club颁发,证书中只包含此名称。如果现在使用服务器的IP地址连接到服务器,则使用的服务器名称167.99.145.82与证书sketchdaily.club中使用的名称不匹配,因此客户端将拒绝连接,因为服务器不可信。

只要尝试一下,在任何网络浏览器中打开https://167.99.145.82,它都不会起作用。因此,对于HTTPS,您必须使用您的服务器的DNS名称或在Let's Encrypt更改注册,以将您的服务器IP地址也包含在证书中,作为";主题替代名称";,则可以继续使用该IP地址。

最新更新