基于docker使用nginx实现服务器的反向代理和负载均衡

mac2025-07-18  7

1.概要

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。正向代理(VPN)和反向代理的区别在于,VPN代理的是客户端,而nginx代理的是服务端。DAG图(有向无环图)如下:

2.docker

从官网拉取nginx镜像

docker search nginx docker pull nginx docker images

红框处代表nginx镜像已经安装成功 运行nginx镜像

docker run -d --name nginx-6542 -p 6542:80 nginx:latest

将nginx.conf文件拷贝到宿主机器

docker cp [id]:/etc/nginx/nginx.conf d:/nginx/nginx.conf

修改本机的nginx.conf文件

user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; #gzip on; include /etc/nginx/conf.d/*.conf; upstream tomcat_nginx{ server 10.10.11.37:6543 weight=5; server 10.10.11.37:6544 weight=5; server 10.10.11.37:6545 weight=5; } server { listen 80; server_name 10.10.11.37; location /{ proxy_pass http://tomcat_nginx; } } }

启动三个tomcat服务器

docker run -d -it -v d:/xxx.war:/usr/local/tomcat/webapps/xxx.war -p 6543:8080 tomcat:latest docker run -d -it -v d:/xxx.war:/usr/local/tomcat/webapps/xxx.war -p 6544:8080 tomcat:latest docker run -d -it -v d:/xxx.war:/usr/local/tomcat/webapps/xxx.war -p 6545:8080 tomcat:latest

删除之前的nginx实例

docker stop [id] docker rm [id]

将编辑过的nginx文件挂载到容器

docker run -d --name nginx-6542 -v d:/nginx/nginx.conf:/etc/nginx/nginx.conf -p 6542:80 nginx:latest

打开浏览器输入:10.10.11.37:6542验证是否成功 验证负载均衡算法 成功。

最新回复(0)