当响应对Django API的请求时,会发生net::ERR\u SSL\u PROTOCOL\u错误
堆栈:AWS Lightsail、React、DRF、Django、Gunicorn、NGINX 我使用Let's Encrypt创建了证书 ※我关注这个网站:当响应对Django API的请求时,会发生net::ERR\u SSL\u PROTOCOL\u错误,django,reactjs,nginx,django-rest-framework,gunicorn,Django,Reactjs,Nginx,Django Rest Framework,Gunicorn,堆栈:AWS Lightsail、React、DRF、Django、Gunicorn、NGINX 我使用Let's Encrypt创建了证书 ※我关注这个网站: 所以,我可以访问https://mydomain 没有错误 但当React调用Django API时,会发生net::ERR\u SSL\u PROTOCOL\u错误 我想我需要在DRF,Django设置一些东西 导致在syslog和/var/log/nginx/error.log中没有记录错误 我在谷歌上搜索,但找不到我想要的 我能
所以,我可以访问https://mydomain 没有错误 但当React调用Django API时,会发生net::ERR\u SSL\u PROTOCOL\u错误 我想我需要在DRF,Django设置一些东西 导致在syslog和/var/log/nginx/error.log中没有记录错误 我在谷歌上搜索,但找不到我想要的 我能征求你的意见吗?多谢各位
编辑:下面是NGINX的conf文件
server {
listen 80;
server_name mydomain;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
server_name mydomain;
ssl_certificate /etc/letsencrypt/live/mydomain/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain/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 / {
root /react_project_path/build;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
server {
listen 8000;
server_name mydomain;
charset utf-8;
location / {
include proxy_params;
proxy_pass https://unix:/django_project_path/gunicorn.sock;
}
location /static/ {
alias /django_project_path/static/;
}
location /media/ {
alias /django_project_path/media/;
}
}
编辑:netstat结果
编辑:现在我检查日志 我刚刚添加了一行代码
server {
listen 443 ssl http2;
server_name mydomain;
error_log /var/log/nginx/error.log debug;
ssl_certificate /etc/letsencrypt/live/mydomain/fullchain.pem; # managed by Certbot
...
下面是NGINX的error.log。(我在这里编辑了私有的路径、令牌和会话。)
在这一点上,
我认为流量并没有到达Django甚至GUnicorn,并且似乎被NGINX中的SSL错误阻塞了
但我仍然认为我没有足够的信息来找到错误的原因
请给我一个建议,谢谢。解决方案非常简单,只需在听到8000后添加“ssl”
...
server {
listen 8000 ssl;
server_name mydomain;
ssl_certificate /etc/letsencrypt/live/mydomain/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain/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
charset utf-8;
location / {
include proxy_params;
proxy_pass https://unix:/django_project_path/gunicorn.sock;
}
location /static/ {
alias /django_project_path/static/;
}
location /media/ {
alias /django_project_path/media/;
}
}
我相信您应该添加SSLcertificate@dsfx3d添加什么?您的意思是在NGINX的conf中添加证书的路径?您是否已在项目apache conf文件中添加了证书?@ShahidTariq apache?但是我使用NGINX。它们都是web服务器。所以我卸载了不必要的Apache。还需要吗?您可以检查服务器上的conf文件,并检查它是否包含您创建的证书的路径吗
...
server {
listen 8000 ssl;
server_name mydomain;
ssl_certificate /etc/letsencrypt/live/mydomain/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain/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
charset utf-8;
location / {
include proxy_params;
proxy_pass https://unix:/django_project_path/gunicorn.sock;
}
location /static/ {
alias /django_project_path/static/;
}
location /media/ {
alias /django_project_path/media/;
}
}