我现在用nginx配置了访问主域名可以到我的探针,但是访问其他比如abc.xxx:5000还是走的http,具体该怎么操作才能让所有http变成https
我服务器A上部署了3个docker服务,分别用 5000,5001,5002三个端口,主要我就是希望使用nginx配置所有访问这三个服务都从http变为https ,而且使用同一域名
安装一个1panel面板,然后配置网站服务和证书自动申请续签。使用网站服务转发不同域名或者路径到不同的服务上即可
我去研究研究!
哥,能用nginx嘛
自己写Nginx配置文件就行,可以不同端口使用不同的子域名
具体可以参考下这部分,原理都是通的
不会配置可以用 宝塔 1panel之类面板 分分钟搞定
只能用不同的子域名来操作嘛,不能用端口来区分嘛
主要想学习下nginx ![]()
没懂你的需求,你是只想用https://abc.xxx:port这个形式,通过不同port访问不同服务吗
对!我现在发现只能http://abc.xxx:port这样,但是像这样https://abc.xxx:port就不行
参考一下这篇文章
简单来说就是如果你是用的 docker 项目本身就已经包含 Nginx 或其他类似的支持使用 SSL 证书的服务,就直接把你申请的 SSL 证书挂载的指定位置就行
如果你的 docker 项目不支持直接挂载 SSL 证书,那就需要额外挂一个 traefik 或 caddy 这种轻量的反向代理
不过还是不建议这种挂载到对应端口的 HTTPS 设置方法,统一使用 Nginx 来反向代理,绑定到对应的子域名,默认用 80/443 端口,是更好的实践方案。因为暴露的端口越多越不安全,当然你内网使用可以
懂了懂了 这下真懂了!
如果使用ufw防火墙还要注意docker端口映射的时候加上127.0.0.1,要不然还是可以直接ip+端口访问
好滴!!
我正好发了个新帖来作为这个问题的workaround
nginx+certbot+域名 或者干脆自签tls
我直接cf tunnel加托管的域名,就直接https了
用 caddy 吧,配置比 nginx 简单,自动申请证书。
端口问题,可以将多个容器合并到一个 compose 中,只需要为 caddy 容器开放 80/443 端口,其它容器不用暴露端口
一个简单示例:
services:
web1:
image: httpd:alpine
container_name: web1
restart: unless-stopped
web2:
image: httpd:alpine
container_name: web2
restart: unless-stopped
caddy:
image: caddy:latest
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "443:443/udp"
depends_on:
- web1
- web2
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
caddy 配置文件:
# 反向代理 web1 容器
web1.yourdomain.com {
reverse_proxy web1:80
}
# 反向代理 web2 容器
web2.yourdomain.com {
reverse_proxy web2:80
}