文章目录
- 1.Traefik安装
- 2.启动nginx配置路由
本文档只是为了留档方便以后工作运维,或者给同事分享文档内容比较简陋命令也不是特别全,不适合小白观看,如有不懂可以私信,上班期间都是在得
前言,领导让我调研在线发布得技术选型
白话文就是,子级域名 a.xx.com,b.xx.com 访问可以对应到服务器得某个服务例如20001,20002端口得服务
第一时间我想到得是nginx进行调用转发,但是就会出现一个问题没办法动态更新转发配置,重启再快也需要时间。
后面经过某群友推荐得Traefik实现了目的
1.Traefik安装
使用docker-compse进行安装
创建一个treafik.yml
version: '3.7'
services:
traefik:
image: traefik:v2.10
container_name: traefik
command:
- "--entrypoints.http.address=:80"
- "--entrypoints.https.address=:443"
- "--api=true"
- "--api.insecure=true"
- "--api.dashboard=true"
- "--api.debug=false"
- "--ping=true"
- "--providers.docker=true"
- "--providers.docker.watch=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.endpoint=unix:///var/run/docker.sock"
- "--providers.docker.swarmMode=false"
- "--providers.docker.useBindPortIP=false"
- "--providers.docker.network=traefik"
- "--providers.file=true"
- "--providers.file.watch=true"
- "--providers.file.directory=/etc/traefik/config"
- "--providers.file.debugloggeneratedtemplate=true"
ports:
- "80:80" # HTTP
- "443:443" # HTTPS
- "9999:8080" # Web UI 端口(通过 --api.insecure=true 启用)
volumes:
- "/var/run/docker.sock:/var/run/docker.sock" # 允许 Traefik 访问 Docker API
- "/home/docker/traefik/config:/etc/traefik/config" # 这样 Traefik 可以监听 Docker 事件
networks:
- traefik # 加入 traefik 网络
networks:
traefik:
driver: bridge # 使用桥接网络
#启动traefik
docker-compose -f traefik.yml up -d
2.启动nginx配置路由
nginx配置
user nginx;
worker_processes auto;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
client_max_body_size 10000M; # 设置文件上传大小限制为20MB
include /etc/nginx/mime.types;
default_type application/octet-stream;
underscores_in_headers on;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
sendfile on;
keepalive_timeout 65;
server {
listen 20002;
server_name www.b.xx.com;
if ($request_method !~ ^(GET|POST|DELETE|PUT)$) {
return 403;
}
charset utf-8;
location / {
root /usr/share/nginx/html/dist;
index index.html index.htm;
try_files $uri $uri/ /index.html;
client_max_body_size 5000m;
client_body_buffer_size 500m;
}
}
}
还是使用docker-compse进行安装
创建一个nginx.yml
version: '3.8'
services:
nginx2:
image: nginx:latest # 使用最新的 Nginx 镜像
container_name: nginx_2 # 容器名称
ports:
- "20002:20002"
labels:
- "traefik.enable=true" # 启用 Traefik 处理该服务
- "traefik.http.routers.nginx2.rule=Host(`www.b.xx.com`)" # 路由规则
- "traefik.http.routers.nginx2.entrypoints=http" # 指定入口点
- "traefik.http.services.nginx2.loadbalancer.server.port=20002" # 指定 Nginx 服务端口
volumes:
- /home/nginx/02/html:/usr/share/nginx/html # 映射前端文件
- /home/nginx/02/conf/nginx.conf:/etc/nginx/nginx.conf # 映射 Nginx 配置文件
- /home/nginx/02/logs:/var/log/nginx # 映射日志目录
restart: always # 容器崩溃后自动重启
networks:
- traefik # 加入 traefik 网络
networks:
traefik:
external: false # 不使用外部网络,而是使用本地定义的网络
#启动nginx
docker-compose -f nginx.yml up -d
我们看一下效果
二级域名访问正常,但是一级域名访问404
我们这里在多启动一个试试
完美实现多级域名访问路由服务器nginx
如果点赞多,评论多会更新详细教程,待补充。