nginx配置文件主要分为六个区域:
- main(全局设置)
- events(nginx工作模式)
- http(http设置)
- sever(主机设置)
- location(URL匹配)
- upstream(负载均衡服务器设置)
有兴趣的同学可以详细去了解一下,这里我们只用到了server,location,upstream区域。
server配置
#相当于在http模块再添加一个server模块
server {
#监听绑定80端口
listen 80;
#下面这个是域名,多个域名用空格隔开
server_name www.php20.com php20.com;
#本网站的根路径
root /绝对路径;
#下面是默认首页
location / {
#配置默认页面
index index.html;
#配置代理服务器
proxy_pass
}
#下面是针对本站所有.php文件进行处理的配置
location / {
#加载fastcgi 一种处理方式
include fastcgi_params;
#fastcgi的参数 指定文件路径及参数,否则会有404或是file not find 提示
fastcgi_param SCRIPT_FILENAME
#fastcgi的服务信息 ip:端口
fastcgi_pass 127.0.0.1:9000;
#fastcgi默认首页
fastcgi_index index.php;
}
}
location配置
用户可以通过location指令实现Nginx对动、静态网页的过滤处理。
- location = /uri =开头表示精确匹配,只有完全匹配上才能生效。
- location ^~ /uri ^~ 开头对URL路径进行前缀匹配,并且在正则之前。
- location ~ pattern ~ 开头表示区分大小写的正则匹配。
- location ~* pattern ~* 开头表示不区分大小写的正则匹配。
- location /uri 不带任何修饰符,也表示前缀匹配,但是在正则匹配之后。
- location / 通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default。
location / {
proxy_pass http://tomcatserver;
# root html;
# index index.html index.html;
}
upstream配置
在upstream参数中添加的应用服务器IP后添加指定参数即可实现负载均衡与分发策略。
upstream myServer {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
配置Nginx负载均衡和反向代理
第一步:启动三个tomcat
在本地启动三个tomcat,模拟三台服务器,记得修改端口号,否则会端口冲突启动不起来(一个tomcat涉及到三个端口,都需要修改,8080,8005,8009,只要这三个端口号和其他tomcat端口都不一样即可)。我修改的三个tomcat访问端口:8081,8082,8083。
第二步:创建页面区分访问的那个tomcat
在每个tomcat下,添加一个页面Test.html,这三个页面稍微可以不一样点,用户区分nginx会访问不同的tomcat。
<!DOCTYPE html>
<html>
<head>
<title>index</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>
<h1>Tomcat——8081</h1>
</body>
</html>
第三步:配置nginx
配置nginx的nginx.conf文件
upstream tomcatserver{
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
server {
listen 90;
server_name localhost;
location / {
# 配置代理服务器,从上边三个tomcat中选择一个进行访问
proxy_pass http://tomcatserver;
}
}
第四步:启动nginx
不断访问 http://localhost:90/Test.html,就可以看到以下三个页面,依次出现
Nginx的负载分发策略
Nginx 的 upstream目前支持的分配算法:
- 轮询 ——1:1 轮流处理请求(默认)
每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,自动剔除,剩下的继续轮询。 - 权重 ——you can you up
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。 - ip_哈希算法
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。
nginx其他配置
upstream myServer {
server 127.0.0.1:8081 down;
server 127.0.0.1:8082 weight=2;
server 127.0.0.1:8083;
server 127.0.0.1:8084 backup;
}
- down
表示单前的server暂时不参与负载 - Weight
默认为1.weight越大,负载的权重就越大。 - max_fails
允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误 - fail_timeout
max_fails 次失败后,暂停的时间。 - Backup
其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。