我在aspnetcore API和Linux的环境中遇到了一些问题。
我有一个Angular项目和5.net项目(API和Worker服务(部署在一个docker容器中,所有这些项目都由一个docker-composite处理。
我有最后一个Nginx容器,我成功地用";Letsencrypt";(docker图片(,这是我的棱角分明的项目。
但当我尝试从客户端向aspnetcore API(自签名证书(进行请求时,这根本不起作用。
ISSUE=>net::ERR_CERT_AUTHORITY_INVALID
所以,我读了很多关于这个问题的话题和文章,我发现了最后一篇文章:https://letsencrypt.org/docs/certificates-for-localhost/,这就解释了,我们不能认证"localhost",所以我们应该在每个浏览器中声明我们的自签名证书。
所以我的问题是:我能一劳永逸,让每个用户都想访问我的网站吗?
可能是aspnetcore和linux绝对不兼容(尤其是SSL(。
我能做什么?我现在有点迷路了。。。
通过nginx代理所有traffix,并将API设置为上游。
示例nginx-config(将您已经工作的TLS配置添加到其中(:
worker_processes 1;
events { worker_connections 1024; }
http {
sendfile on;
upstream web-api {
server mydotnetapi:80;
}
server {
listen 80;
server_name example.com;
location /symbiosisapi/ {
proxy_pass http://web-api/;
proxy_redirect off;
proxy_cache_bypass $http_upgrade;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $server_name;
}
location / {
autoindex on;
root /home/www-data/mysite;
}
}
}
如果有人点击/位置,它将接收静态内容,如果有人命中/api位置,请求将转发到您的dotnet api。nginx将处理所有TLS。将mydotnetapi
更改为您在撰写文件中设置的容器名称。