nginx学习
一、特点
- 稳定性极强。7*24小时不间断运行
- Nginx提供了非常丰富的配置实例
- 占用内存小,并发能力强
二、安装
2.1安装
version: '3.1'
sercvices:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- 80:80
2.2nginx的配置文件
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;# 错误日志存放的位置
pid /var/run/nginx.pid;
#以上为全局快, worker_processes越大,并发能力越强
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; 引入了配置文件
server {
listen 80;#代表nginx监听的端口号
listen [::]:80;
server_name localhost;#接受请求的ip
location / {
root /usr/share/nginx/html;#接受的请求根据这个路径去查找静态资源
index index.html index.htm;
}
}
}
2.3修改docker-compose文件
version: '3.1'
sercvices:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- 80:80
volumes:
- /opt/docker_nginx/conf.d/:/etc/nginx/conf.d
正反向代理
3.1正向代理
1,正向代理服务时由客户端设立的
2.客户端了解代理服务器和目标服务器是谁
3.帮助咱们实现突破访问权限,提高访问速度,对目标服务器隐藏客户端的ip
3.2反向代理
在访问目标服务器之前会先访问反向代理服务器,他会选择你选择目标的哪个服务器
1.反向代理服务器是配置在服务端的
2.客户端不知道访问的到底是那一台服务器
3.达到负载均衡,并且可以隐藏服务器真正的ip地址
3.3基于nginx实现反向代理
先启动tomcat
编写nginx配置文件
修改default.conf配置文件
location / {
proxy_pass http://192.168.0.106:8080;/
}
3.4 关于nginx的location的路径映射
优先级关系:
(location =) >(location /xxx/yyy/zzz)>(location ^~) >(location ~,~*)>(location /其实路径)>(Location /)
#1.=匹配
location = /{
#精准匹配,主机名不能带二年和的字符串
}
#2.通用
location /xxx{
#匹配所有以/xxx开头的路径
}
#3.正则匹配
location ~ /xxx{
#匹配所有以/xxx开头的路径,优先级高于通用的
}
#4.匹配开头路径
location ^~ /images/{
#匹配所有以images开头的路径,高于正则匹配的优先级
}
#5.~* \.(gif|jpg|png)${
匹配以gif或者。。。为结尾的路径
}
3.5负载均衡策略
1.轮询方式
一个服务器分配一次交替分配 前提是两个服务器处理速度一致
2.权重方式
根据处理速度的比例分配
3.ip-hash
根据客户端的ip地址经过计算得到的结果分配服务器
四、负载均衡配置
4.1轮询
4.2权重
4.3ip-hash
同一个电脑ip访问的地址是一样的
五、动静分离
Nginx的并发能力公式:
worker_processes*work_connections/4|2=最终的并发能力
动态资源/4 静态资源/2
动态资源
静态资源
通过动静分离提升并发能力
5.1 动态资源代理
配置如下
location / {
proxy_pass 路径;
}
5.2静态资源代理
配置如下
location / {
root 静态资源路径
index 默认访问路径下的什么资源
autoindex on ;展示静态资源下的全部内容,以列表的方式展开
#先修改docker 添加一个数据卷,映射到Nginx服务器的一个目录
现在docker-compose.yml加入如下
Nginx集群
解决单点故障
需要在每一个nginx添加keepalived程序
还需要一个haproxy 提供虚拟的路径,统一接受用户的请求软件中指定找哪一个nginx