简单配置
server {
listen 80;
autoindex on;#默认为off
server_name localhost;
location / {
root /static;
}
}
当访问localhost:80的时候,会默认访问/static文件夹的文件。
这里为了方便调试,可以加上autoindex on;访问的时候就会自动生成文件目录,如图
想要理解什么是反向代理,要先理解什么是正向代理
2.1正向代理
我们学生交作业,只要交给课代表,然后由课代表把作业交给老师。
这里就是正向代理,多个用户(学生)通过代理(课代表)把任务(作业)交给服务器(老师)
正向代理,代理的是客户端
加入我们打电话给114,114后台肯定有很多接话员,但我们拨号的时候不需要考虑这么多,直接打114就行了,具体的114会分配给你一个不忙的接话员。作为用户,我们感受不到任何差别。这就是反向代理
反向代理,代理的是服务器
正向代理代理客户端,反向代理代理服务器
server {
listen 666;
server_name localhost;
location / {
proxy_pass http://localhost:777;
}
}
server块可以理解为一个虚拟主机,此时我们如果调用的是http://localhost:666时,会将这个请求转发到http://localhost:777
一、内置负载策略
Nginx负载均衡是通过upstream模块来实现的,内置实现了三种负载策略,配置还是比较简单的。官网负载均衡配置说明:http://nginx.org/en/docs/http/load_balancing.html
http {
upstream myapp1 {
server srv1.example.com weight=3;
server srv2.example.com down;
server srv3.example.com backup;
server srv4.example.com max_fails=1;
server srv5.example.com weight=2 max_fails=3 fail_timeout=15;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
}
upstream 中server的属性:
upstream tomcats {
server 192.168.0.100:8080 weight=2; # 2/6次
server 192.168.0.101:8080 weight=3; # 3/6次
server 192.168.0.102:8080 weight=1; # 1/6次
}
上例配置,表示6次请求中,100分配2次,101分配3次,102分配1次
upstream tomcats {
server 192.168.0.100:8080 weight=2 max_fails=3 fail_timeout=15;
server 192.168.0.101:8080 weight=3;
server 192.168.0.102:8080 weight=1;
}
192.168.0.100这台机器,如果有3次请求失败,nginx在15秒内,不会将新的请求分配给它。
upstream tomcats {
server 192.168.0.100:8080 max_conns=1000;
}
表示最多给100这台Server分配1000个请求,如果这台Server正在处理1000个请求,nginx将不会分配新的请求给到它。假如有一个请求处理完了,还剩下999个请求在处理,这时nginx也会将新的请求分配给它。
另一个负载均衡方式是least-connected/最少连接。当某些请求需要更长时间来完成时,最少连接可以更公平的控制应用实例上的负载。
使用最少连接负载均衡时,nginx试图尽量不给已经很忙的应用服务器增加过度的请求, 而是分配新请求到不是那么忙的服务器实例。
nginx中通过在服务器集群配置中使用least_conn指令来激活最少连接负载均衡方法:
upstream myapp1 {
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
要配置使用ip-hash负载均衡,只要在服务器集群配置中使用ip_hash指令:
upstream myapp1 {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
参考:
http://nginx.org/en/docs/http/load_balancing.html
https://juejin.im/post/5b2cf79af265da596019661e
https://skyao.gitbooks.io/learning-nginx/content/documentation/HTTP_load_balancer.html