docker安装nginx及应用
安装nginx
安装nginx
//安装最新版本nginx
// 省略目录创建
version: '3.1'
services:
nginx:
restart: always
image: nginx
container_name: nginx
ports:
- 81:80
- 9000:9000
volumes:
- ./conf/nginx.conf:/etc/nginx/nginx.conf
- ./wwwroot:/usr/share/nginx/wwwroot
安装 两个tomcat
version: '3'
services:
tomcat1:
image: tomcat
container_name: tomcat1
ports:
- 9090:8080
tomcat2:
image: tomcat
container_name: tomcat2
ports:
- 9091:8080
在 /usr/local/docker/nginx/conf 目录下的nginx 配置文件
(这边的nginx 配置文件需要修改)
user nginx;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 配置一个代理即 tomcat1 服务器
upstream tomcatServer1 {
server 192.168.75.145:9090;
# server 192.168.75.145:9091;
}
# 配置一个代理即 tomcat2 服务器
upstream tomcatServer2 {
# server 192.168.75.145:9090;
server 192.168.75.145:9091;
}
# 配置一个虚拟主机
server {
listen 81;
server_name admin.service.itoken.funtl.com;
location / {
# 域名 admin.service.itoken.funtl.com 的请求全部转发到 tomcat_server1 即 tomcat1 服务上
proxy_pass http://tomcatServer1;
# 欢迎页面,按照从左到右的顺序查找页面
index index.jsp index.html index.htm;
}
}
server {
listen 80;
server_name admin.web.itoken.funtl.com;
location / {
# 域名 admin.web.itoken.funtl.com 的请求全部转发到 tomcat_server2 即 tomcat2 服务上
proxy_pass http://tomcatServer2;
index index.jsp index.html index.htm;
}
}
}
- upstream:每个设备的状态:
- down:表示当前的 server 暂时不参与负载
- weight:默认为 1 weight 越大,负载的权重就越大。
- max_fails:允许请求失败的次数默认为 1 当超过最大次数时,返回 proxy_next_upstream 模块定义的错误
- fail_timeout:max_fails 次失败后,暂停的时间。
- backup:其它所有的非 backup 机器 down 或者忙的时候,请求 backup 机器。所以这台机器压力会最轻
# 定义负载均衡设备的 Ip及设备状态
upstream myServer {
server 127.0.0.1:9090 down;
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup;
}
从上面的配置文件,可以看出来,一个nginx 带动着两个tomcat,也就实现了负载均衡(当然,nginx也可以实现反向代理)
我的目录结构(测试时用的)
搭建伪 CDN 服务器
location / {
root /usr/share/nginx/wwwroot; # 对应nginx 配置的数据卷
index index.jsp index.html index.htm;
}
在 wwwroot 目录下创建 cnd 文件,再下面创建hello.html
通过 ip+cdn+hello.html 访问网页
一般cdn 用于网站的css,js的样式库的加载