一、正向代理与反向代理的概念
正向代理:局域网内的机器借助代理服务访问局域网外的网站。代理的对象是客户端,目标是去访问外网的资源。(eg:通过代理翻墙去看看外面的世界)
正向代理示意图.png
反向代理:局域网向Internet提供资源,让Internet上其他用户通过代理服务器访问局域网内的资源。代理的对象是服务端,目标是让其他客户端可以访问服务端的资源(eg:公司内的负载均衡、静态资源服务器)
反向代理示意图.png
总结:正向代理与反向代理涉及到的技术基本一致,主要是因为应用场景不同而进行区别。
二、正向代理配置的指令
1.resolver指令:用于指定DNS服务器IP地址
2.resolver_timeout指令:用于设置DNS域名解析超时时间
3.proxy_pass指令:用于设置代理服务器的协议和地址(反向代理也会用到,到时候详细介绍)
因为正向代理服务的场合不多,所以指令较少,功能也比较简单
(另外关于nginx正向代理是否支持HTTPS,暂时还没尝试,以后实践了在补充)
三、反向代理配置的指令
1.proxy_pass指令:用于设置被代理服务器的地址
语法结构: proxy_pass URL; URL包含传输协议、主机名称或者IP地址加端口号等要素。传输协议通常是"http"或者"https" 注意upstream和proxy_pass搭配使用的两种情况 (1)proxy_list中指明了传输协议 upstream proxy_list { server http://192.168.4.30/uri/; server http://192.168.12.19/uri/; } server { location / { proxy_pass proxy_list; } } (2)proxy_list中没传输协议 upstream proxy_list { server 192.168.4.30/uri/; server 192.168.12.19/uri/; } server { location / { proxy_pass http://proxy_list; } } 还有需要注意URL中是否包含URI,以访问"http://www.test.com/test/index.html"为例 server{ server_name www.test.com; location /test/ { #proxy_pass http://192.168.12.19; --->转到"http://192.168.12.19/test/index.html" #proxy_pass http://192.168.12.19/index/; --->转到"http://192.168.12.19/index/index.html" #proxy_pass http://192.168.12.19/; --->转到"http://192.168.12.19/index.html" } }
2.proxy_hide_header指令:设置在发送HTTP响应时,隐藏一些头域信息
3.proxy_pass_header指令:设置一些头域信息以被发送
4.proxy_pass_request_body、proxy_pass_request_headers指令:是否将客户端的请求体、请求头发送给代理服务器
5.proxy_set_header、proxy_set_body指令:设置新的请求头、请求体发往代理服务器
还有14个指令,以后再慢慢补,先把自己常用的指令先整理出来。
四、nginx服务器负载均衡相关配置
nginx服务器是现在静态的给予优先级的加权轮询算法,主要使用配置proxy_pass和upstream指令,以下是实例
upstream backend { server 192.168.4.30 weight=5; server 192.168.12.19 weight=3; server 192.168.11.17 ; #默认weight=1 } server { location / { proxy_pass http://backend; proxy_set_header Host $host; } }
根据backend服务器组中的不同的优先级别,实现加权轮询。 192.168.4.30的级别最高,优先接收和处理请求,192.168.11.17的级别最低,最少处理请求,192.168.12.19处于中等优先级。
轮询负载均衡就是将所有服务器组的weight设置为一样的即可
转载链接地址:https://www.jianshu.com/p/9e8c2fbe7156
本文暂时没有评论,来添加一个吧(●'◡'●)