我正在尝试使用nginx图像与Docker一起运行UI应用程序,我能够在端口80上访问服务而没有任何问题,但每当我试图通过443端口通过https访问它时,我无法访问该站点不断加载的应用程序,最终导致无法访问我已经更新了nginx.conf文件在default.conf中允许通过端口443访问
我的nginx.conf
charset utf-8;
server {
listen 80;
server_name localhost;
root /usr/nginx/html;
}
server {
listen 443;
server_name localhost;
root /usr/nginx/html;
}
我已经在/usr/nginx文件夹中添加了SSL自签名证书,并通过Dockerfile暴露了443端口
以下是我的Dockerfile
FROM nginx
COPY dist /usr/nginx/html
RUN chmod -R 777 /usr/nginx/html/*
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY domain.crt /usr/nginx
EXPOSE 80:443
ENTRYPOINT nginx -g 'daemon off;'
谁能解释一下443端口不允许任何访问
对于nginx服务器允许SSL加密,您需要在nginx.conf中提供SSL标志只有SSL证书是不够的,你还需要SSL证书密钥和密码,它们必须被配置。
charset utf-8;
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
}
server {
listen 443 ssl;
ssl_certificate /usr/nginx/ssl.crt;
ssl_certificate_key /usr/nginx/ssl.key;
ssl_password_file /usr/nginx/ssl.pass;
server_name localhost;
root /usr/nginx/html;
}
您需要将ssl证书,密钥和密码通过卷或通过嵌入到docker容器中。如果你在kubernetes集群上运行容器,通过kubernetes secrets添加它们将是更好的选择。
对于Dockerfile,您可以添加
FROM nginx
COPY dist /usr/nginx/html
RUN chmod -R 777 /usr/nginx/html/*
COPY nginx.conf /etc/nginx/conf.d/default.conf
COPY ssl.crt /usr/nginx/
COPY ssl.pass /usr/nginx/
COPY ssl.key /usr/nginx/
EXPOSE 80:443
ENTRYPOINT nginx -g 'daemon off;'
更多信息可以参考Nginx Docker文章https://medium.com/@agusnavce/Nginx -server-with-ssl- certifics-with-lets-encrypt-indocker -670caefc2e31