二级域名
起因
由于在一台服务器上部署了多个不同的应用/服务,之前是使用域名+端口号的方式来区分应用。但是这种方式在应用或服务多了以后,就不好使了,对于个人来说,需要记上应用或服务对应的端口号以及服务的域名后缀。
于是就有了这篇文章记录。
在 Nginx 配置子域名
- 在 Nginx 中配置需要的子域名(我习惯将每一个子域名的配置分开来,一个子域名对应一个字配置文件)
- 在 Nginx 默认配置文件 http 节点下配置:
include /path/to/config/*.conf
- 在 Nginx 默认配置文件 http 节点下配置:
Portainer
配置:
# portainer.conf
server {
listen 80;
listen [::]:80;
server_name docker.noexception.cn;
location / {
proxy_redirect off;
proxy_set_header host $host;
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_pass http://portainer:9000/;
}
}
- 定时任务配置:
# tasks.conf
server {
listen 80;
listen [::]:80;
server_name tasks.noexception.cn;
location ^~ /xxl-job-admin {
proxy_redirect off;
proxy_set_header host $host;
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_pass http://xxl-job-admin:7397/xxl-job-admin/;
}
location / {
proxy_redirect off;
proxy_set_header host $host;
proxy_set_header x-real-ip $remote_addr;
proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
proxy_pass http://xxl-job-admin:7397/xxl-job-admin/;
}
}
配置域名解析
- 在域名管理界面中,添加一条解析记录:
- 记录类型为
A
, - 主机记录为: 子域名(如:docker),
- 记录值为服务器的IP地址,
- 提交保存。
- 记录类型为
总结
- 整个配置过程并不复杂,概况来说就是三步:
- 部署应用;
- 添加 Nginx 配置(如 portainer.conf);
- 在域名解析页面中,添加子域名的解析记录。
补充:
1. 关于在 Docker 中,配置好子域名后,发现无法访问的情况。
- 原因: 是因为 docker 的网络策略默认情况下,容器与容器之间是无法相互访问的,在启动容器的时候,得给她们指定好网络组。
- 又因为容器重启,IP 会随之变化,所以我们需要利用 docker 网络,通过容器 name 在容器中互相访问。
Docker 网络
1. 创建自定义网络
- 指令:
docker network create domain
- 默认使用的是 bridge 驱动
- 不在同一个 docker network 中的容器,不能互相访问,他们不在同一个网段上
2. 创建容器时,指定 docker network
-
启动第一个容器,指令:
docker run -it --name portainer --network domain -p 9000:9000 portainer/portainer
-
--network
参数指定容器使用的网络 -
启动第二个容器,指令:
docker run -p 6379:6379 --network domain --name redis -v /docker/data/redis/redis.conf:/etc/redis/redis.conf -v /docker/data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
-
启动一个 redis 服务容器,通过在 redis 容器访问 portainer 容器,使用 curl 工具来协助我们验证
验证:
- 使用
docker exec
进入redis
容器中
# docker exec -it redis bash
[root@noexception ~]# docker exec -it redis bash
root@a01af1db7118:/data#
- 使用
curl
工具进行验证:
# curl http://portainer:9000
# ping http://portainer:9000
- 使用
docker network inspect domain
来查看 docker network 信息,检查两个容器是否链接到了同一个网络下:
[
{
"Name": "domain",
"Id": "17a05973b0e8805b372e143d3a7ce591a076e98e3d7cb357444ed2ee1338e009",
"Created": "2022-04-08T15:13:19.017550444+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"11ccb85d3c61b0a5826d311965929b1dad07aec2013778bc7d4fbf46dbaace7c": {
"Name": "nginx",
"EndpointID": "d0d611461ff9a3849e53c05c27fdf26ca39bea739d24de613b013b86cb8a43ff",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
},
"7f2e31026a6249577632239f6cd69a6781718a6e4b436db5747fece6599b05ae": {
"Name": "zookeeper",
"EndpointID": "38cbc10011c3e68ccbcf7f7c7b69948df0fd6a72834d10258752139e149efa0d",
"MacAddress": "02:42:ac:12:00:05",
"IPv4Address": "172.18.0.5/16",
"IPv6Address": ""
},
"8e37d220283e84af7382a4481baea5f8dca61b30166922bd8bc03adfd2dbb322": {
"Name": "portainer",
"EndpointID": "0f51d369c1fe824b0d3941d8a3dce868a88581a17733d4a685515401ea6b08a6",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
},
"a01af1db711844c4547d2b64e53021f5bb6967fb7e83120592d5c913872f4cd9": {
"Name": "redis",
"EndpointID": "1754b57297a8a7ea0933fcab19727b045c1948551ff1bdab449c2b4c525cda11",
"MacAddress": "02:42:ac:12:00:04",
"IPv4Address": "172.18.0.4/16",
"IPv6Address": ""
},
"dc550ff519c39f9f9800e3ba5dc25ae4c435550d1259425caba426601a4dc358": {
"Name": "xxl-job-admin",
"EndpointID": "6373e88cc3ce52fefbcbcb99fdccdd74df16c64c805a071e82cf07985675b8e7",
"MacAddress": "02:42:ac:12:00:06",
"IPv4Address": "172.18.0.6/16",
"IPv6Address": ""
},
"f7762c952a1c21cbc230fe8c65c705bacafd57c9655744b2cc43af658dd945d7": {
"Name": "kafka",
"EndpointID": "52ca42e07513833630f4906b34590641bbb743d9586eba9da08e9796a56fd147",
"MacAddress": "02:42:ac:12:00:07",
"IPv4Address": "172.18.0.7/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
标签:容器,二级域名,redis,header,proxy,portainer,Docker,docker
From: https://www.cnblogs.com/lancediarmuid/p/16853428.html