You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用自签名SSL证书运行Nginx Docker时443端口无法访问求助

443端口无法访问的核心原因

  • Nginx的443端口监听配置缺失SSL标识及证书配置:仅声明listen 443不会自动开启HTTPS协议处理,需要添加ssl标识,同时必须指定SSL证书和私钥的路径,你当前的配置中完全没有相关参数。
  • Dockerfile的端口暴露语法错误:EXPOSE指令需要用空格分隔多个端口,你写的EXPOSE 80:443是错误语法,正确写法为EXPOSE 80 443。
  • 缺失SSL私钥文件:你仅将domain.crt公钥证书复制到了容器内,没有同步复制对应的domain.key私钥文件,SSL握手无法完成。
  • 容器启动时未映射443端口:即使配置正确,若docker run时没有添加-p 443:443参数映射宿主机443端口到容器,外部也无法访问HTTPS服务。

修正后的配置示例

调整后的nginx.conf

charset utf-8;

server {
    listen 80;
    server_name localhost;
    root /usr/nginx/html;
}

server {
    listen 443 ssl;
    server_name localhost;
    root /usr/nginx/html; 

    # 配置SSL证书和私钥路径
    ssl_certificate /usr/nginx/domain.crt;
    ssl_certificate_key /usr/nginx/domain.key;

    # 通用SSL安全配置
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
}

调整后的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
# 新增私钥文件复制
COPY domain.key /usr/nginx

# 修正端口暴露语法
EXPOSE 80 443
ENTRYPOINT nginx -g 'daemon off;'

启动容器注意事项

运行容器时需要同时映射80和443端口,示例命令如下:
docker run -d -p 80:80 -p 443:443 <你的镜像名称>

内容的提问来源于stack exchange,提问作者user17269534

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:57:05