一、nginx代理服务
1、概述
代理分类:正向代理、反向代理
2、正向代理
当局域网不能上网时,可以在浏览器设置正向代理满足上网要求
当我们想通过FQ访问国外网站查询资料,可以在浏览器设置正向代理
当服务器只允许某个端的IP访问(比如googe),所以我们需要请求运行访问的那个客户端,在让其帮我们转发请求
3、反向代理
服务端有很多工程模块的时候,需要通过Nginx代理实现流量的分发
4、反向代理模式与Nginx代理模块
5、常见的Nginx作为正向代理支持的协议
注意:
不能支持使用HTTPS协议
Nginx使用HTTP协议作为正向代理的协议
Nginx使用正向代理范围比较窄
二、反向代理配置
1、nginx代理配置语法
Syntax: proxy_pass URL; Default: — Context: location, if in location, limit_except http://localhost:8000/uri/ http://192.168.0.10:8000/uri/ http://unix:/tmp/backend.socket:/uri/
2.类似于nopush缓冲区
//尽可能收集所有头请求 Syntax: proxy_buffering on | off; Default: proxy_buffering on; Context: http, server, location //扩展: proxy_buffer_size proxy_buffers proxy_busy_buffer_size
3.跳转重定向
Syntax: proxy_redirect default; proxy_redirect off;proxy_redirect redirect replacement; Default: proxy_redirect default; Context: http, server, location
4.头信息
Syntax: proxy_set_header field value; Default: proxy_set_header Host $proxy_host; proxy_set_header Connection close; Context: http, server, location //扩展: proxy_hide_header proxy_set_body
5.代理到后端的TCP连接超时
Syntax: proxy_connect_timeout time; Default: proxy_connect_timeout 60s; Context: http, server, location //扩展 proxy_read_timeout //以及建立 proxy_send_timeout //服务端请求完, 发送给客户端时间
6.Proxy常见配置项具体配置如下:
[root@Nginx ~]# vim /etc/nginx/proxy_params proxy_redirect default; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 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; //具体location实现 location / { proxy_pass http://127.0.0.1:8080; include proxy_params; }
三、nginx正向代理配置
1、nginx正向代理配置
//配置10.0访问限制,仅允许同网段访问 location ~ .*\.(jpg|gif|png)$ { allow 192.168.10.0/24; deny all; root /soft/code/images; //配置正向代理 [root@Nginx ~]# cat /etc/nginx/conf.d/zy_proxy.conf server { listen 80; resolver 233.5.5.5; location / { proxy_pass http://$http_host$request_uri; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } //客户端使用SwitchySharp浏览器插件配置正向代理
2、Nginx反向代理示例
//proxy代理 [root@proxy ~]# cat /etc/nginx/conf.d/proxy.conf server { listen 80; server_name nginx.bjstack.com; index index.html; location / { proxy_pass http://192.168.0.100; include proxy_params; } } //WEB站点 [root@Nginx ~]# cat /etc/nginx/conf.d/images.conf server { listen 80; server_name nginx.bjstack.com; root /soft/code; location / { root /soft/code; index index.html; } location ~ .*\.(png|jpg|gif)$ { gzip on; root /soft/code/images; } }
四、nginx负载均衡
1、负载均衡按范围划分:GSLB全局负载均衡、SLB,nginx是一个典型的SLB。
2、负载均衡按层级划分:分为四层负载均衡和七层负载均衡,nginx是一个典型的七层SLB。
3、nginx负载均衡配置场景
nginx实现负载均衡用到了proxy_pass代理模块核心配置, 将客户端请求代理转发至一组upstream虚拟服务池
4、Nginx upstream虚拟配置语法
Nginx upstream虚拟配置语法 Syntax: upstream name { ... } Default: - Context: http //upstream例子 upstream backend { server backend1.example.com weight=5; server backend2.example.com:8080; server unix:/tmp/backend3; server backup1.example.com:8080 backup; } server { location / { proxy_pass http://backend; } } #创建对应html文件 [root@Nginx ~]# mkdir /soft/{code1,code2,code3} -p [root@Nginx ~]# cat /soft/code1/index.html <html> <title> Code1</title> <body bgcolor="red"> <h1> Code1-8081 </h1> </body> </html> [root@Nginx ~]# cat /soft/code2/index.html <html> <title> Coder2</title> <body bgcolor="blue"> <h1> Code1-8082</h1> </body> </html> [root@Nginx ~]# cat /soft/code3/index.html <html> <title> Coder3</title> <body bgcolor="green"> <h1> Code1-8083</h1> </body> </html> #建立对应的releserver.conf配置文件 [root@Nginx ~]# cat /etc/nginx/conf.d/releserver.conf server { listen 8081; root /soft/code1; index index.html; } server { listen 8082; root /soft/code2; index index.html; } server { listen 8083; root /soft/code3; index index.html; }
5、配置Nginx反向代理
[root@Nginx ~]# cat /etc/nginx/conf.d/proxy.conf upstream node { server 192.168.0.13:8081; server 192.168.0.13:8082; server 192.168.0.13:8083; } server { server_name 192.168.0.13; listen 80; location / { proxy_pass http://node; include proxy_params; } }
五、nginx负载均衡状态配置
1、后端服务器在负载均衡调度中的状态
状态 概述 down 当前的server暂时不参与负载均衡 backup 预留的备份服务器 max_fails 允许请求失败的次数 fail_timeout 经过max_fails失败后, 服务暂停时间 max_conns 限制最大的接收连接数 测试backup以及down状态 upstream load_pass { server 192.168.0.11:8001 down; server 192.168.0.12:8002 backup; server 192.168.0.13:8003 max_fails=1 fail_timeout=10s; } location / { proxy_pass http://load_pass; include proxy_params; } //关闭8003测试
2、Nginx负载均衡调度策略
调度算法 概述
轮询 按时间顺序逐一分配到不同的后端服务器(默认)
weight 加权轮询,weight值越大,分配到的访问几率越高
ip_hash 每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
url_hash 按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
least_conn 最少链接数,那个机器链接数少就分发
hash关键数值 hash自定义的key
Nginx负载均衡权重轮询具体配置 upstream load_pass { server 192.168.0.11:8001; server 192.168.0.12:8002 weight=5; server 192.168.0.13:8003; } Nginx负载均衡ip_hash具体配置 //如果客户端都走相同代理, 会导致某一台服务器连接过多 upstream load_pass { ip_hash; server 192.168.0.11:8001; server 192.168.0.12:8002; server 192.168.0.13:8003; } //如果出现通过代理访问会影响后端节点接收状态均衡 Nginx负载均衡url_hash具体配置 upstream load_pass { hash $request_uri; server 192.168.0.11:8001; server 192.168.0.12:8002; server 192.168.0.13:8003; } //针对三台服务器添加相同文件 /soft/code1/url1.html url2.html url3.html /soft/code2/url1.html url2.html url3.html /soft/code3/url1.html url2.html url3.html
3、nginx负载均衡TCP配置
Nginx四层代理仅能存在于main段 stream { upstream ssh_proxy { hash $remote_addr consistent; server 192.168.0.13:22; } upstream mysql_proxy { hash $remote_addr consistent; server 192.168.0.13:3306; } server { listen 6666; proxy_connect_timeout 1s; proxy_timeout 300s; proxy_pass ssh_proxy; } server { listen 5555; proxy_connect_timeout 1s; proxy_timeout 300s; proxy_pass mysql_proxy; } }
暂无评论内容