nginx |
您所在的位置:网站首页 › ie浏览器的配置和使用教程 › nginx |
目录
学习背景一、代理服务二、正向代理1.1 什么是正向代理?1.2 如何实现nginx正向代理?1.3 客户端访问(验证正向代理)
二、反向代理2.1 什么是反向代理?2.2 nginx实现反向代理
三、负载均衡3.1 什么是负载均衡?3.2 负载均衡算法有哪些?
学习背景
什么是nginx? 【百度百科】 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器… 除了反向代理,nginx还支持正向代理、负载均衡以及基于SSL安全证书的HTTPS访问等功能特性~ 本文主要是介绍是如何配置nginx正向代理、反向代理及负载均衡,进入正文~ 一、代理服务什么是代理?来一张图了解下 先来看张图~ 【再举个栗子】 某同学喜欢面向搜索引擎编程,想通过 百度 搜索引擎查找一些学习资料,但是有些网站直接访问可能不太安全,会暴露自己的IP,同学比较苦恼,想着怎样才能使用百度 搜索自己想要的学习资料,又不会暴露自己的IP在网站上呢? 这时我告诉该同学,我呢手上刚好有一台代理服务器,这台代理服务器通过nginx配置了正向代理转发http和https请求,你呢,只需要在自己的Windows本地电脑的网关配置一下这台代理服务器的IP和端口号,就能正常通过代理服务器访问到百度 并搜索相关的学习资料了,还不会暴露自己真实的IP~ 同学非常兴奋,说自己了解过nginx,但是啥是正向代理啊? 正向代理,指的是通过代理服务器 代理浏览器/客户端去重定向请求访问到目标服务器 的一种代理服务。 正向代理服务的特点是代理服务器 代理的对象是浏览器/客户端,也就是对于目标服务器 来说浏览器/客户端是隐藏的。 同学觉得有点意思,于是又问,那nginx如何实现正向代理啊? 1.2 如何实现nginx正向代理?(1)正向代理转发https说明 在实现nginx正向代理之前,先说明一下,现在的网站基本上都是https,因此要实现nginx正向代理转发请求,除了要配置转发http80端口的请求,还有配置https443端口的请求~ 正向代理转发http请求很简单,不过正向代理转发https请求稍微有一点麻烦,目前网上的教程大多都是如下这样配置的(也不知道他们验证过没。。。): (2)安装nginx 如果已安装nginx(可跳过),这里以1.9.2版本为例,使用root用户进行安装: $ cd /usr/nginx $ wget http://nginx.org/download/nginx-1.9.2.tar.gz $ tar -xzvf nginx-1.9.2.tar.gz $ cd /usr/nginx/nginx-1.9.2 $ make && make install这里安装nginx通过install进行编译安装,编译后默认安装目录为/usr/local/nginx,后续配置新模块ngx_http_proxy_connect_module还需要重新install编译一次~ (3)下载新模块 GitHub上下载ngx_http_proxy_connect_module的zip压缩包源码: https://github.com/chobits/ngx_http_proxy_connect_module (4)解压新模块源码 将新模块ngx_http_proxy_connect_module源码压缩包上传到服务器/usr/nginx目录,并解压并重命名 $ mkdir -p /usr/nginx $ cd /usr/nginx $ /usr/nginx $ unzip ngx_http_proxy_connect_module-master.zip $ mv ngx_http_proxy_connect_module-master ngx_http_proxy_connect_module(5)添加新模块到nginx 使用root用户进入nginx的资源目录/usr/nginx/nginx-1.9.2,给nginx添加新模块ngx_http_proxy_connect_module和并重新编译nginx $ /usr/nginx/nginx-1.9.2 $ patch -p1 proxy_pass http://$host$request_uri; proxy_set_header HOST $host; proxy_buffers 256 4k; proxy_max_temp_file_size 0k; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_next_upstream error timeout invalid_header http_502; } } #正向代理转发https请求 server { #指定DNS服务器IP地址 resolver 114.114.114.114; #监听443端口,https默认端口443 listen 443; #正向代理转发https请求 proxy_connect; proxy_connect_allow 443 563; proxy_connect_connect_timeout 10s; proxy_connect_read_timeout 10s; proxy_connect_send_timeout 10s; location / { proxy_pass http://$host; proxy_set_header Host $host; } }– DNS说明: (国内外)目前比较主流的DNS: (国外)谷歌:8.8.8.8 developers.google.com (国外)OpenDNS:208.67.222.222 signup.opendns.com (国内)114:114.114.114.114 www.114dns.com (国内)腾讯:119.29.29.29 www.dnspod.cn (国内)阿里:223.5.5.5 alidns.com (国内)百度:180.76.76.76 dudns.baidu.com (7)检查和刷新nginx配置 /usr/local/nginx/sbin/nginx -t /usr/local/nginx/sbin/nginx -s reload 1.3 客户端访问(验证正向代理)客户端要代理访问目标网站示例对象: http://www.baidu.com 和https://www.baidu.com (1)客户端–Windows浏览器访问 首先在本地电脑的IE浏览器设置代理服务器和端口: IE->右上角 ->工具 ->Internet选项->连接->局域网(LAN)设置 ->配置代理IP和端口 实时查看nginx日志 tail -f /usr/local/nginx/logs/access.log通过实时查看nginx的访问日志,可以看到Windows下设置代理IP和端口后,本地电脑访问的所有网页会通过代理服务器进行访问网页,实现了正向代理的功能,并且隐藏了用户自己真实的IP~ (2)客户端–Linux代理访问 Linux下也可以验证代理服务器是否能正常代理转发http和https请求~ curl http://www.baidu.com/ -v -x 127.0.0.1:80 curl https://www.baidu.com/ -v -x 127.0.0.1:443nginx正向代理转发https成功: 先来一张图了解下~ 反向代理,指的是浏览器/客户端并不知道自己要访问具体哪台目标服务器,只知道去访问代理服务器 ,代理服务器再通过反向代理 +负载均衡实现请求分发到应用服务器的一种代理服务。 反向代理服务的特点是代理服务器 代理的对象是应用服务器,也就是对于浏览器/客户端 来说应用服务器是隐藏的。 2.2 nginx实现反向代理(1)修改nginx配置 修改nginx配置vi /usr/local/nginx/conf/nginx.conf 在http模块中配置如下: (2)检查和刷新nginx配置 /usr/local/nginx/sbin/nginx -t /usr/local/nginx/sbin/nginx -s reload(3)浏览器访问 代理服务器部署了tomcat应用,访问tomcat静态页面验证一波~ http://代理服务器IP:8080/appname/ReverseProxy1.html 再来看下前面介绍反向代理的这张图~ 负载均衡算法常用的有轮询、权重和ip_hash算法,默认是轮询算法~ (1)基于轮询的算法 原理是每一个请求按时间顺序逐一被分发到不同的应用服务器,如果接收请求的应用服务器挂了,并且请求超过最大失败次数max_fails(1次),则在失效时间fail_timeout(10秒)内不会再转发请求到该节点~ upstream defaultReverseProxyServer{ server 192.168.0.1:8080; server 192.168.0.2:8080; }(2)基于权重的算法 原理是每一个请求按权重被分发到不同的应用服务器,同样,如果接收请求的应用服务器挂了,并且请求超过最大失败次数max_fails(默认1次或可设置N次),则在失效时间fail_timeout(默认10秒,可设置N秒)内,不会再转发请求到该节点~ upstream weightReverseProxyServer{ server 192.168.0.1:8080 weight=10 max_fails=2 fail_timeout=5s; server 192.168.0.2:8080 weight=5 max_fails=2 fail_timeout=5s; }(3)基于ip_hash的算法 原理是每一个请求按用户访问IP的哈希结果分配,如果请求来自同一个用户IP则固定这台IP访问一台应用服务器,该算法可以有效解决动态网页中存在的session共享问题。 upstream ipHashReverseProxyServer{ ip_hash; server 192.168.0.1:8080; server 192.168.0.2:8080; }一般使用的是基于权重的算法,因为现在很多情况下都是集群部署,而且集群下的各个服务器资源大多都是不均匀的,资源高的则分配权重高一些,资源低的则分配权重低一些,这种情况使用基于权重的负载均衡算法,可以更高效的利用资源和提高并发处理能力~ 原创不易,觉得有用的小伙伴来个一键三连(点赞+收藏+评论 )走起~ |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |