zl程序教程

您现在的位置是:首页 >  其他

当前栏目

nginx2

2023-04-18 15:39:27 时间

nginx:
1.http静态资源服务器

  server {
	  listen      80;                                                        
	  server_name  localhost;                                              
	  client_max_body_size 1024M;

	  location / {
			  root  e:wwwroot;
			  index  index.html;
		  }
  } 

2.反向代理

server {  
	  listen      80;                                                        
	  server_name  localhost;                                              
	  client_max_body_size 1024M;

	  location / {
		  proxy_pass http://localhost:8080;
		  proxy_set_header Host $host:$server_port;
	  }
  } 

3.负载均衡

upstream test {
  server localhost:8080;
  server localhost:8081;
}
server {
  listen      81;                                                        
  server_name  localhost;                                              
  client_max_body_size 1024M;

  location / {
	  proxy_pass http://test;
	  proxy_set_header Host $host:$server_port;
  }
} 

upstream策略

Nginx的upstream支持5种分配方式
1、轮询
轮询是upstream的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器,如果某个后端服务器down掉后,能自动剔除。
upstream backend {
server 192.168.1.101:8888;
server 192.168.1.102:8888;
server 192.168.1.103:8888;
}
2、weight
轮询的加强版,即可以指定轮询比率,weight和访问几率成正比,主要应用于后端服务器异质的场景下。
upstream backend {
server 192.168.1.101 weight=1;
server 192.168.1.102 weight=2;
server 192.168.1.103 weight=3;
}
3、ip_hash
每个请求按照访问ip(即Nginx的前置服务器或者客户端IP)的hash结果分配,这样每个访客会固定访问一个后端服务器,可以解决session一致问题。
upstream backend {
ip_hash;
server 192.168.1.101:7777;
server 192.168.1.102:8888;
server 192.168.1.103:9999;
}
4、fair
fair顾名思义,公平地按照后端服务器的响应时间(rt)来分配请求,响应时间短即rt小的后端服务器优先分配请求。
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
fair;
}
5、url_hash
与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。
upstream backend {
server 192.168.1.101;
server 192.168.1.102;
server 192.168.1.103;
hash $request_uri;
hash_method crc32;
}
其中,hash_method为使用的hash算法,需要注意的是:此时,server语句中不能加weight等参数。
关于,如何在负载均衡中使用upstream请参看这里。

支持lua脚本location下access_by_lua_file
跨域问题:浏览器动作,与服务请求地址不同源