学习nginx:windows系统下,nginx反向代理及负载均衡简单配置,本地tomcat测试

一、Nginx安装

 在 http://nginx.org/ 下载对应版本的nginx

 在 nginx 的目录下使用 start nginx 或者 双击 nginx.exe 打开nginx

二、Http配置及server配置

1、http配置

include       mime.types; #文件扩展名与文件类型映射表
default_type  application/octet-stream; #默认文件类型
sendfile on;  #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来 输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置 为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常 把这个改成off。
autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。
tcp_nopush on; #防止网络阻塞
tcp_nodelay on; #防止网络阻塞
keepalive_timeout 120; #长连接超时时间,单位是秒
gzip on; #开启gzip压缩输出

2、server虚拟主机

nginx支持三种类型的 虚拟主机配置
1、基于ip的虚拟主机, (一块主机绑定多个ip地址)
server{
  listen       192.168.1.1:80;
  server_name  localhost;
}
server{
  listen       192.168.1.2:80;
  server_name  localhost;
}
2、基于域名的虚拟主机(servername)
#域名可以有多个,用空格隔开
server{
  listen       80;
  server_name  www.nginx1.com www.nginx2.com;
}
server{
  listen       80;
  server_name  www.nginx3.com;
}
3、基于端口的虚拟主机(listen不写ip的端口模式)
server{
  listen       80;
  server_name  localhost;
}
server{
  listen       81;
  server_name  localhost;
}

在server块中,可以通过server_name来配置server的多域名,域名可以通过以下方式:
(1)、完整的域名,如www.example.com
(2)、带*号开头的域名,如 *.example.com
(3)、带*号末尾的域名,如 mail.*
(4)、可匹配的正则表达式

3、location

下面的配置将匹配以 /some/path/开头的URIs,例如:/some/path/document.html
location /some/path/ {
...
}

正则表达式能通过 ~ 符号 和 ~* 这两个符号表示,分别指正则表达式区分大小写和不区分大小写,以下例子表示匹配URIs中包含.html 或者.htm 的访问路径:
location ~ \.html? {
...
}
nginx会匹配最准确的路径,会先匹配相对路径,如果不匹配,再跟正则表达式进行匹配

以下例子中,第一个路径/images/的文件目录是/data,第二个路径表明nginx作为代理的角色将会把请求转给后端www.example.com的机器上
server {
location /images/ {
root /data;
}

location / {
proxy_pass http://www.example.com;
}
}
如果这样配置,那么除了/image/开头的URIs,其他的URIs将会以代理的方式传到后端机器

root 指令
root指令能指定那个目录作为根目录用于文件的检索,这个指令能用于http,server,location这些块中
下面的例子指定了virtual server文件检索的根目录:
server {
root /www/data;

location / {
}

location /images/ {
}

location ~ \.(mp3|mp4) {
root /www/media;
}
}
当一个URI以/image/开头,那么将会在 /www/data/images/这个目录下进行检索;当URI以 .mp3或.mp4结尾时,nginx将会在/www/media目录下检索资源当一个请求以 / 结尾时,nginx会尝试在该目录下找到该请求的索引文件(index file)。默认的索引文件为index.html。
例如 如果URI为/images/some/path/,那么nginx会尝试查找/www/data/images/some/path/index.html文件,如果这个文件不存在,那么将默认返回404。
 

三、Nginx反向代理简单配置

 server {
        listen       8088;
        server_name  localhost;

        location / {
			proxy_pass "http://127.0.0.1:8089/bz_web_backend/";
            root   html;
            index  index.html index.htm;
        }
	location /test {
		proxy_pass "http://127.0.0.1:9090/bz_web_backend/";
        root   html;
        index  index.html index.htm;
     }
}

 

四、Nginx负载均衡简单配置

1、轮询(默认)   

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。  

2、weight 
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。  
例如:  
upstream bakend {  
server 192.168.0.14 weight=10;  
server 192.168.0.15 weight=10;  
}  

3、ip_hash 
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。  
例如:  
upstream bakend {  
ip_hash;  
server 192.168.0.14:88;  
server 192.168.0.15:80;  
}  

4、fair(第三方)   
按后端服务器的响应时间来分配请求,响应时间短的优先分配。  
upstream backend {  
server server1;  
server server2;  
fair;  
}  

5、url_hash(第三方)   

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。  

例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法  

upstream backend {  
server squid1:3128;  
server squid2:3128;  
hash $request_uri;  
hash_method crc32;  
}  

tips:  

upstream bakend{#定义负载均衡设备的Ip及设备状态  
ip_hash;  
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;  
}  
在需要使用负载均衡的server中增加  
proxy_pass http://bakend/;  

每个设备的状态设置为:  
1.down 表示单前的server暂时不参与负载  
2.weight 默认为1.weight越大,负载的权重就越大。  
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误  
4.fail_timeout:max_fails次失败后,暂停的时间。  
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。  

nginx支持同时设置多组的负载均衡,用来给不用的server来使用。  

client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug  
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录  

location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

http{

    upstream testNginx{
		#ip_hash;
		server 127.0.0.1:8089 weight=10;
		server 127.0.0.1:9090 weight=10;
	}
	
    server {
        listen       8088;
        server_name  localhost;
		
		location / {
			proxy_pass  http://testNginx/bz_web_backend/;
           
        }
}

根据权重分发请求到不同的server

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值