一、Nginx 代理 Mongodb
1.创建 nginx 容器
docker run -d --restart=always -p 443:443 --name nginx-mongodb -v /usr/local/nginx/mongodb:/etc/nginx/tcp.d nginx
2.进入 nginx 容器,执行以下操作(注意:复制粘贴记得删除配置文件里的注释!!!):
#进入容器
docker exec -it nginx-mongodb bash
#编辑代理 mongodb 配置文件
cd /etc/nginx/tcp.d
cat > mongo.server.27017.conf <<EOF
stream {
upstream stream_mongo_backend {
server 192.168.1.200:27017; #要代理的 mongodb IP和端口
}
server {
listen 443; #容器映射的端口
proxy_pass stream_mongo_backend;
}
}
EOF
#修改 nginx 配置文件。作用:使上面的文件生效
cat >> /etc/nginx/nginx.conf <<EOF
include /etc/nginx/tcp.d/*.conf;
EOF
3.退出容器,重启 nginx 容器
docker restart nginx-mongodb
二、Nginx 代理 redis
1.创建 nginx 容器
docker run -d --restart=always -p 4200:4200 --name nginx-redis -v /usr/local/nginx/redis:/etc/nginx/tcp.d nginx
2.进入 nginx 容器,执行以下操作(注意:复制粘贴记得删除配置文件里的注释!!!):
#进入容器
docker exec -it nginx-redis bash
#编辑代理 redis 配置文件
cd /etc/nginx/tcp.d
cat > redis.conf <<EOF
stream {
upstream redis {
server 192.168.1.200:6379 max_fails=3 fail_timeout=30s; #redis 的IP和端口
}
server {
listen 4200; #nginx 容器映射的端口
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass redis;
}
}
EOF
#修改 nginx 配置文件。作用:使上面的文件生效
cat >> /etc/nginx/nginx.conf <<EOF
include /etc/nginx/tcp.d/*.conf;
EOF
3.退出容器,重启 nginx 容器
docker restart nginx-redis
三、Nginx 代理 ELK
1.创建 nginx 容器
docker run -d --restart=always -p 5602:5602 -p 9201:9201 --name nginx-elk -v /usr/local/nginx/conf.d:/etc/nginx/conf.d nginx
2.进入 nginx 容器,执行以下操作,这次代理会增加密码验证(注意:复制粘贴记得删除配置文件里的注释!!!)
设置 nginx 代理密码验证:
#进入 nginx 容器
docker exec -it nginx-elk bash
#更换源码镜像库地址
cat > /etc/apt/sources.list << EOF
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
EOF
#更新软件源
apt-get update
#安装 apache2-utils
apt-get install apache2-utils
#生成 kibana 密码文件
htpasswd -c /etc/nginx/kibana.passwd 用户名
#输入密码(自动弹出)
New password:
Re-type new password:
#生成 es 密码文件
htpasswd -c /etc/nginx/elasticsearch.passwd 用户名
#输入密码(自动弹出)
New password:
Re-type new password:
添加 ELK 配置文件:
#添加代理 ELK 配置信息
cat > /etc/nginx/conf.d/elk.conf <<EOF
upstream kibana_server {
server 192.168.1.200:5692; #kibana IP和端口
}
server {
listen 5602; #容器映射的端口
server_name 127.0.0.1; #本机的IP
auth_basic "Welcome Acess Kibana WebUI"; #密码验证的标题
auth_basic_user_file /etc/nginx/kibana.passwd; #密码文件的位置
location / {
proxy_pass http://kibana_server;
}
}
upstream elasticsearch_server {
server 192.168.1.200:9292; #es 的IP和端口
}
server {
listen 9201; #容器映射的端口
server_name 127.0.0.1; #本机IP
auth_basic "Welcome Acess Elasticsearch WebUI"; #密码验证的标题
auth_basic_user_file /etc/nginx/elasticsearch.passwd; #密码文件的位置
location / {
proxy_pass http://elasticsearch_server;
}
}
EOF
3.退出容器,重启 nginx 容器
docker restart nginx-elk
最后效果:
登录代理地址会先验证,输出正确账号密码才可访问