我有一个flask应用程序,前面有nginx反向代理服务器。我已经将我的应用程序部署在一个数字海洋液滴上。我创建了一个具有根权限的用户,并使用此用户通过HTTPS运行我的应用程序。我对以下路径中的.pem文件的权限遇到问题:/etc/letsencrypt/live/my-domain-name.com。现在我要做的是使用终端中的sudo命令将这些文件复制到我的项目文件夹中,然后在nginx dockerfile中再次将它们复制到/etc/nginx,并在配置文件中给出此路径。但是,这并不理想,因为我希望自动续订我的SSL证书。我尝试使用诸如
chown-r用户:user/etc/letsencrypt
但没什么效果。我得到这个错误:
nginx: [emerg] BIO_new_file("/etc/letsencrypt/live/my-domain-name.com/fullchain.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/letsencrypt/live/my-domain-name.com/fullchain.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)
我知道怎么解决这个问题吗?我希望能够使用/live/my域名路径访问.pem文件,并且能够在证书过期时更新证书,而不使用根用户。任何帮助都将不胜感激。谢谢。
项目配置文件:
server {
listen 80;
server_name my-domain-name.com www.my-domain-name.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name my-domain-name.com www.my-domain-name.com;
ssl_certificate /etc/nginx/fullchain.pem;
ssl_certificate_key /etc/nginx/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://app:8000;
proxy_ssl_server_name on;
# Do not change this
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static {
rewrite ^/static(.*) /$1 break;
root /static;
}
}
nginx文件:
FROM nginx:1.13.3
EXPOSE 80
EXPOSE 443
RUN rm /etc/nginx/nginx.conf
COPY nginx.conf /etc/nginx/
RUN rm /etc/nginx/conf.d/default.conf
COPY project.conf /etc/nginx/conf.d/
COPY fullchain.pem /etc/nginx/
COPY privkey.pem /etc/nginx/