Nginx代理服务基本上有三种:
配置语法:
proxy_pass URL;
(location、if in location,limit_except)
反向代理配置案例
server {
listen 80;
server_name new.test.com;
location ~ /test.html$ {
proxy_pass http://127.0.0.1:8080;
}
}
正向代理配置案例:
server {
listen 80;
server_name new.test.com;
resolver 8.8.8.8;
location / {
proxy_pass http://$http_host$request_url;
}
}
透明代理配置案例:
server {
listen 80;
server_name zabbix.liang.cn;
location /{
proxy_set_header host '192.168.10.31';
proxy_set_header referer '';
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://192.168.10.31;
}
}
代理常用配置
配置语法:
proxy_buffering on | off;
(http,server,location)
扩展:proxy_buffer_size、proxy_buffers、proxy_busy_buffers_size
配置语法:
proxy_redirect default;
proxy_redirect off;
proxy_redirect redirect replacement;
(http,server,location)
配置语法:
proxy_set_header field value;
默认:
proxy_set-header Host $proxy_host;
proxy_set_header Connection close;
(http,server,location)
扩展:proxy_hide_header、proxy_set_body
配置语法:
proxy_connect_timeout time;
(http,server,location),默认60s
扩展:proxy_read_timeout、proxy_send_timeout
server {
listen 80;
server_name location;
location / {
procy_pass http://test;
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffer_size 32k;
proxy_buffering on;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
}
}
Ngixn负载均衡
配置语法:
upstream name {..}
(http)
配置案例:
http{
upstream test {
server 192.168.10.10:8080 down;
server 192.168.10.10:8081 max_fails=1 fail_timeout=10s;
server 192.168.10.11:8080 backup;
}
server {
listen 80;
server_name location;
location / {
procy_pass http://test;
}
}
}
后端服务器在负载均衡调度中的状态
down --当前的server暂时不参与负载均衡
backup --预留的备份服务器
max_fails --允许请求失败的次数
fail_timeout --经过max_fails失败后,服务暂停的时间
max_conns --限制最大的接收连接数
调度算法
- 轮询 --按时间顺序逐一分配到不同的后端服务器
- 加权轮询 --weight值越大,分配到的访问几率越高
- least_conn --最少链接数,那个机器连接数少就分发
- ip_hash --每个请求按访问IP的hash结果分配,这样来自同一个IP的固定访问一个后端服务器
upstream test {
ip_hash;
server 192.168.10.10:8080;
server 192.168.10.10:8081;
server 192.168.10.11:8080;
}
- url_hash --按照访问的URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
upstream test {
hash $request_uri;
server 192.168.10.10:8080;
server 192.168.10.10:8081;
server 192.168.10.11:8080;
}