nginx是反向代理和负载均衡服务器
一、下载安装nginx
- nginx.org网址下下载stable 版本
- 下载完成后直接解压
- 在解压文件夹中打开命令行
- 输入start nginx.exe启动nginx
- 在浏览器中输入http://localhost/可以看到nginx已经启动
二、实现文件服务器
- 修改nginx.config文件,新建一个本地文件夹,配置文件虚拟服务器。
- 重启后在浏览器中输入http://file_server/test.txt,可访问本地文件数据
三、测试负载均衡
- 打开idea,新建两个微服务client1、client2
- 修改nginx.conf,新增负载均衡
- 新增反向代理服务,指向负载均衡服务
- 重启nginx,在浏览器中输入http://test2/sayHi,刷新多次可以看到请求在client1和client2中分配。
四、nginx.config
1. 配置文件结构
#全局块
...
#events块
events {
...
}
#http块
http
{
#http全局块
...
#server块
server
{
#server全局块
...
#location块
location [PATTERN]
{
...
}
}
}
-
全局块:
-
user nobody;
->配置用户或者组,默认为nobody -
worker_processes 1;
->允许生成的进程数,默认为1 -
error_log log/error.log debug;
-> 制定日志路径,级别。 -
pid logs/nginx.pid;
-> 指定nginx进程运行文件存放地址 -
events 块一般是配置nginx连接的特性,如1个子进程能同时允许多少连接
-
worker_connections 1024;
->单个进程最大连接数(最大连接数=连接数*进程数) -
http块 这是配置http服务器的主要段
-
client_max_body_size 20000m;
->设定通过nginx上传文件的大小 -
include mime.types;
->文件扩展名与文件类型映射表 -
default_type application/octet-stream;
->默认文件类型,默认为text/plain -
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 logs/access.log main;
->combined为日志格式的默认值 -
proxy_set_header Cookie $http_cookie;
->设置代理服务器Cookie -
proxy_set_header Host $host;
->设置代理服务器Host -
proxy_set_header Remote_Addr $remote_addr;
->设置代理服务器Remote_Addr -
proxy_set_header X-Real-IP $remote_addr;
->表示将客户端的ip地址,加入到http请求头部中; -
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
->表示如果中间经过多级代理,则将所有代理的IP全部加入请求头部中; -
sendfile on;
->开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。 -
tcp_nopush on;
->防止网络阻塞 -
keepalive_timeout 65;
->长连接超时时间,单位是秒,默认为0 -
proxy_read_timeout 600;
->连接成功后,后端服务器响应时间(代理接收超时) -
proxy_send_timeout 600;
->后端服务器数据回传时间(代理发送超时) -
server_names_hash_bucket_size 64;
->高负荷下缓冲大小(proxy_buffers*2) -
gzip on;
->开启gzip压缩输出 -
upstream local_tomcat
->设定负载均衡后台服务器列表 -
include vhost_che_boot/*.conf;
->加载扩展配置文件 -
server块 这是虚拟主机段
-
listen 80;
->监听端口 -
server_name www.v3che.com;
->域名 -
root che_boot_html;
->根目录 -
access_log logs/www.v3cheboot.access.log main;
->定义本虚拟主机的访问日志 -
add_header Cache-Control max-age=86403;
->添加缓存控制 -
index index.htm;
->设置默认页 -
location块 定位,把特殊的路径或文件再次定位
(location =) > (location 完整路径) > (location ^~ 路径) > (location ~,~* 正则顺序) > (location 部分起始路径) > (/) 以=开头表示精确匹配 ^~ 开头表示uri以某个常规字符串开头,不是正则匹配 ~ 开头表示区分大小写的正则匹配; ~* 开头表示不区分大小写的正则匹配 / 通用匹配, 如果没有其它匹配,任何请求都会匹配到
-
location /
->因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 -
location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {expires 10d;}
->图片缓存时间设置 -
location ~ .*.(js|css)?$ {expires 1h;}
->JS和CSS缓存时间设置 -
location = / {}
->精确匹配 / ,主机名后面不能带任何字符串 -
location /documents/ {}
->1. 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索 2. 只有后面的正则表达式没有匹配到时,这一条才会采用这一条 -
location ~ /documents/Abc{}
->1. 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索 2. 只有后面的正则表达式没有匹配到时,这一条才会采用这一条 -
location ^~ /images/ {}
->匹配任何以 /images/ 开头的地址,匹配符合以后,停止往下搜索正则,采用这一条。 -
location ~* \.(gif|jpg|jpeg)${}
->匹配所有以 gif,jpg或jpeg 结尾的请求 -
proxy_pass http://local_tomcat;
->设置要代理的local_tomcat 定义的服务器列表 -
rewrite /pingce/ /che_v3/getDriverNewsData?outFile=/pingce/index.htm break;
->rewrite功能就是集合正则表达式和标志位实现url重写和重定向。rewrite只能放在server{}、location{}、if(){}块中,并且只能对域名后边的出去传递参数外的字符串起作用。 -
try_files $uri $uri/ @aaaaa;
比如用户访问这个网地址:http://www.xxx.com/test.html
try_files首先会判断他是文件,还是一个目录,结果发现他是文件,与第一个参数 u r i 变 量 匹 配 , uri变量匹配, uri变量匹配,uri=/test.html。
然后去到网站目录下去查找test.html文件是否存在,如果存在直接读取返回。如果不存在直接跳转到第三个参数.