Docker建站怎么启用https访问

墨染YYDD 2026-07-24 03:22 1

用docker搭建了一个网站,但是只能通过ip:80的形式访问,研究了好久都没成功,给我整麻了,有没有大佬指点一下,解决了送鸡腿🍗 ^-^



最新回复 (34)
  • coldsword 07-24 03:23
    1

    嘿嘿我来,等下,打字中


    有点像自带nginx容器的项目,这个nginx容器内部应该有监听443端口,所以直接将443端口映射到外部就好了:

    docker-compose文件:


    ports:
    - "80:80"
    - "443:443"

    然后修改nginx的配置文件,给nginx配置SSL证书等等:


    volumes:
    - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro

    这里映射到了本地所以直接修改编排目录下的nginx.conf文件:


    server {
    listen 80;
    server_name example.com;

    return 301 https://$host$request_uri;
    }

    server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    root /var/www/html;

    ...
    }

    然后外部的vssl证书要挂载到容器里面:


    volumes:
    - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
    - ./ssl:/etc/nginx/ssl:ro

    其中 ./ssl 里面放:


    fullchain.pem
    privkey.pem

    证书申请有挺多办法,比较常用的acme注意替换证书文件的时候多加一步重启nginx的步骤即可实现自动托管证书

  • 摸鱼大队长 07-24 03:23
    2

    想要https 就要备案,然后购买证书。http随意。

  • MythHM 07-24 03:23
    3

    开个宿主机端口,然后nignx反向代理到443,然后绑定SSL证书即可

    宿主机端口记得用ufw屏蔽一下公网

  • zlshi 07-24 03:23
    4

    首先你要把容器的端口映射在宿主机上,其次你要把防火墙规则放下,然后就可以访问了

  • zlshi 07-24 03:24
    5

    @zlshi #4 发布于2026/7/24 03:23:57

    首先你要把容器的端口映射在宿主机上,其次你要把防火墙规则放下,然后就可以访问了


    国内服务器没备案 443会被阻断的

  • Fishyu 07-24 03:25
    6

    nginx反代

    你docker不要开在80端口

  • 墨染YYDD 楼主 07-24 03:25
    7

    @MythHM #3 不知道怎么开宿主机端口 ^-^

  • laniakeancov 07-24 03:26
    8

    1panel解君愁

  • 墨染YYDD 楼主 07-24 03:27
    9

    @Fishyu #6 如果我想修改端口,该怎么操作

  • MythHM 07-24 03:27
    10

    @墨染YYDD #7

    问ai

    或者看示例


    version: '3'
    services:
    web:
    image: nginx
    ports:
    - "8080:80" # 同样使用 "宿主机端口:容器端口" 的格式
  • reedsock 07-24 03:28
    11

    用cf,用个域名,目前感觉最方便

  • reedsock 07-24 03:29
    12

    @reedsock #11 发布于7/24/2026, 3:28:05 AM

    用cf,用个域名,目前感觉最方便


    并且cf也可以docker,干净方便

  • 摸鱼大队长 07-24 03:30
    13

    @zlshi #5 发布于23/07/2026, 12:24:29


    @zlshi #4 发布于2026/7/24 03:23:57

    首先你要把容器的端口映射在宿主机上,其次你要把防火墙规则放下,然后就可以访问了


    国内服务器没备案 443会被阻断的


    是这样的。所有还是备案。有免费的证书阿里云3个月。你可以用软路由,然后定时续签你的证书 。挺方便的。我目前的方案就是阿里云域名+他的备案。当然,前提是你开启了443 80 端口。内部要放行这俩端口,还有Docker 端口映射到主机上。。。实在不信你就AI介入吧。ssh -i 私钥路径 告诉他别名 (ip) 直接接入。让他改也行。这样更快。

    #7 别整那些麻烦事情了,搞定AI接入,分分钟搞定。你自己研究很久都出不来。ai 30分钟就搞定。@墨染YYDD

  • 墨染YYDD 楼主 07-24 03:34
    14

    @摸鱼大队长 #13 我用的国外服务器,面向国外用户群体的,主要是docker玩不明白 ^-^

  • 墨染YYDD 楼主 07-24 03:36
    15

    @coldsword #1 感谢老哥,我试试 ^-^

  • 摸鱼大队长 07-24 03:36
    16

    @墨染YYDD #14 那就让Ai接入,你问问他。哪里都有免费的证书。这不是事情。让ai给你操作吧,省得你费事了。

  • 摸鱼大队长 07-24 03:38
    17

    @墨染YYDD #14 而且一个Docker 有啥玩不明白的,一个最小化的小虚拟机。一个服务就是一个虚拟机。

  • Chipha 07-24 03:39
    18

    把域名和需要绑定的东西跟codex说,它会帮你弄好的

  • coldsword 07-24 03:40
    19

    @墨染YYDD #15 这台机器只会有这一个项目吧,那就用我这个办法,只是后面有别的项目如果要用到http端口最好保留现在的配置再起一个web服务器做反代,这个编排的http端口换做本地的其他端口

  • Qaaaa 07-24 03:43
    20

    我很认真地说:AI秒了

  • 墨染YYDD 楼主 07-24 05:27
    21

    鏖战了几个小时,docker compose up and down了数十次,终于解决了! 不靠Ai还是很锻炼人的^-^

  • coldsword 07-24 05:30
    22

    @墨染YYDD #21 恭喜老哥学会了建站 ^-^

  • 墨染YYDD 楼主 07-24 05:43
    23

    @coldsword #22 我的方法是将在env文件中http_port设为8080,https_port设为443,http_port设为80会显示端口被占用,然后目前套CF,这个设置方法会出现以下几种情况:

    http://ip:80访问出现nginx页面

    http://ip:8080访问跳转到https://ip带免费证书网页

    https://域名访问出现带谷歌证书网页

    这种情况是不是就没问题了,还有一点困惑的是CF证书是不是会覆盖其他证书? ^-^

  • zl533 07-24 05:53
    24

    80服务都有了,就是nginx反代问题

  • coldsword 07-24 05:54
    25

    @墨染YYDD #23 ip+80端口能访问很正常,因为楼主现在已经将nginx容器的http80端口映射出来了,安装好nginx并做好端口监听了必然行为,不需要的话楼主可以设置下cf的ip白名单,这样其他ip包括访客的ip访问ip+80都不会响应这个界面了,防火墙或者nginx都有拦截的功能。不过cf默认的完全/严格模式用的443回源所以意义不是特别大,不需要这个可以把80端口那一行直接注释掉不映射出来,这样最简单

    8080目前提供的图片我不能确定原因,目前没找到哪里占了这个端口

    第三个情况是理想情况吧,谷歌证书应该是由cf签发的说明已经部署好了,现在去cf那边设置好https跳转就完美了

    cf证书是加密cf到源站通信的证书,实际访问业务域名在套了cdn的情况下访客侧不会“替换”也就是显示这个证书,这个证书也不会对浏览器可信,只对cf而言可信,所以目前你的方案套cf就很完美的,用编排内的1个nginx就完成了建站

  • yisaings 07-24 06:33
    26

    如果觉得nginx编辑麻烦了些,可以看看nginx proxy manager这个docker项目,YouTube挺多教程的,这样就不用去编写文件,直接网页操作,直接在页面填好你需要反代的端口然后自动申请证书,我觉得页面化对小白更友好 ^-^

  • 墨染YYDD 楼主 07-24 06:37
    27

    @coldsword #25 很专业 ^-^

  • 墨染YYDD 楼主 07-24 06:38
    28

    @yisaings #26 感谢提醒,有空研究研究 ^-^

  • msi 07-24 06:39
    29

    直接用1panel不行么

  • 墨染YYDD 楼主 07-24 06:43
    30

    @msi #29 1panel感觉比较臃肿,其实我更倾向于二进制这种手动安装的 ^-^

  • -可鸽可弃- 07-24 06:48
    31

    反代docker端口

  • LogicNova 07-24 07:28
    32

    映射端口再反代就行

  • seazhou 07-24 08:03
    33

    反代理一下就行

  • zlshi 07-24 16:40
    34

    搞定了吧

* 帖子来源NodeSeek
返回