首先要使用nginx就要先从docker中拉取镜像,这里可以通过docker-compose的yml的方式进行配置
创建docker-compose.yml文件并写入内容
version: '3.1'
services:
redis: # 服务的名称
restart: always # 代表只要docker启动,那么这个容器就跟着一起启动
image: nginx # 指定镜像 本地没有则会自动从docker云镜像拉取
container_name: nginx # 指定容器名称:--name
ports:
- 80:80 # 指定端口号的映射
environment:
TZ: Asia/Shanghai # 指定时区
这样我们就创建好了一个nginx的容器
nginx反向代理
反向代理即客户端直接访问nginx服务器然后nginx再把请求转发到对应的服务器,这样可以有效的隐藏ip
比如liunx不开启8080端口的防火墙那么外网就无法访问liunx内部的tomcat,但是外网可以访问nginx然后nginx再把请求转发到tomcat,这样一来就相当于访问nginx就是访问tomcat而且端口也不需要改变
首先修改yml配置文件,添加一个数据卷映射
version: '3.1'
services:
nginx: # 服务的名称
restart: always # 代表只要docker启动,那么这个容器就跟着一起启动
image: nginx # 指定镜像 本地没有则会自动从docker云镜像拉取
container_name: nginx # 指定容器名称:--name
ports:
- 80:80 # 指定端口号的映射
environment:
TZ: Asia/Shanghai # 指定时区
volumes:
- nginx_conf:/etc/nginx/conf.d # 映射数据卷
volumes:
nginx_conf:
external: false
然后到数据卷的存放位置就可以看到nginx的配置文件default.conf
编辑这个文件,然后整个文件的内容如下
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://192.168.148.2:8080; #这里一定要加分号否则会无法启动
}
}
proxy_pass 就是代理的地址 listne就是监听的地址,只要访问了nginx的80端口那么就会自动去访问代理地址,也就是做转发的操作
访问192.168.148.2就会自动访问本机的tomcat
localton路径匹配
# 1. 直接匹配
location = / {
# 精准匹配,主机名后面不能带任何的字符串
}
# 2. 通用匹配
location /images {
# 匹配所有以/xxx开头的路径
}
# 3. 匹配开头路径
location ^~ /images/ {
# 匹配所有以/images开头的路径
}
# 4. 正则匹配
location ~ /images {
# 匹配所有以/xxx开头的路径
}
# 5. 匹配后缀
location ~* \.(gif|jpg|png)$ {
# 匹配以gif或者jpg或者png为结尾的路径
}
# 6. 全部通配
location / {
# 匹配全部路径
}
nginx负载均衡
负载均衡策略有三种,分别是轮询,权重,ip
首先找到nginx的配置文件一样是default.conf
轮询
然后在里面修改为如下配置
upstream tomcat {
server 192.168.148.2:8080 ;
server 192.168.148.2:8081;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcat; #这里一定要加分号否则会无法启动
}
}
负载均衡实际上就是在配置文件的基础上加一个upstream 然后配置需要访问的ip,默认是轮询的方式也就是两个ip平均访问,而权重则需要在旁边添加一个比重
权重
权重实际上就是在后面加上weight 其他的不变 权重大的会被访问的次数更多
upstream tomcat {
server 192.168.148.2:8080 weight=权重比例;
server 192.168.148.2:8081 weight=权重比例;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcat; #这里一定要加分号否则会无法启动
}
}
ip_hash
ip_hash则是用户第一次访问的时候访问到哪一个那么以后这个用户就会一直访问到这个服务器,只需要在配置服务的上方添加一条语句ip_hash即可
upstream tomcat {
ip_hash;
server 192.168.148.2:8080;
server 192.168.148.2:8081;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://tomcat; #这里一定要加分号否则会无法启动
}
}
nginx动静分离
动态资源代理
# 配置如下
location / {
proxy_pass 路径;
}
静态资源代理
# 配置如下location / { root 静态资源路径; index 默认访问路径下的什么资源; autoindex on; # 代表展示静态资源全的全部内容,以列表的形式展开。}# 先修改nginx的docker-compose.yml文件,添加一个数据卷,映射到Nginx服务器的一个目录 - /opt/docker_nginx/html:/data/html - /opt/docker_nginx/img:/data/img# 添加了index.html和1.jpg静态资源# 修改default.conf配置文件 location /html { root /data; index index.html; } location /img { root /data; autoindex on; }