【2022争霸赛*干货满满】Nginx反向代理详解及优化配置案例
  

SANGFOR_HZ 18233人觉得有帮助

{{ttag.title}}
本帖最后由 SANGFOR_HZ 于 2022-10-21 21:22 编辑

Nginx反向代理详解及优化配置案例



一、反向代理概念
        
       反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
       通常的代理服务器,只用于代理内部网络对Internet外部网络的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。不支持外部网络对内部网络的连接请求,因为内部网络对外部网络是不可见的。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。此时代理服务器对外就表现为一个Web服务器,外部网络就可以简单把它当作一个标准的Web服务器而不需要特定的配置。不同之处在于,这个服务器没有保存任何网页的真实数据,所有的静态网页或者CGI程序,都保存在内部的Web服务器上。因此对反向代理服务器的攻击并不会使得网页信息遭到破坏,这样就增强了Web服务器的安全性。
       反向代理就是通常所说的web服务器加速,它是一种通过在繁忙的web服务器和外部网络之间增加一个高速的web缓冲服务器来降低实际的web服务器的负载的一种技术。反向代理是针对web服务器提高加速功能,作为代理缓存,它并不是针对浏览器用户,而针对一台或多台特定的web服务器,它可以代理外部网络对内部网络的访问请求。
       反向代理服务器会强制将外部网络对要代理的服务器的访问经过它,这样反向代理服务器负责接收客户端的请求,然后到源服务器上获取内容,把内容返回给用户,并把内容保存到本地,以便日后再收到同样的信息请求时,它会把本地缓存里的内容直接发给用户,以减少后端web服务器的压力,提高响应速度。

二、反向代理工作原理

(1) 用户通过域名发出访问web服务器的请求,该域名被DNS服务器解析为反向代理服务器的IP地址;
(2) 反向代理服务器接受用户的请求;
(3) 反向代理服务器在本地缓存中查找请求的内容,找到后直接把内容发送给用户;
(4) 如果本地缓存里没有用户所请求的信息内容,反向代理服务器会代替用户向源服务器请求同样的信息内容,并把信息内容发给用户,如果信息内容是缓存的还会把它保存到缓存中。

三、nginx反向代理

1. 案例环境:Centos 64位 PC机

2. 案例要求:
     现有一内网网段,想去访问外网,不需要通过nat转换,而通过代理服务进行访问外网。

3. 案例拓扑图
    使用画图工具根据实施要求绘制出网络拓扑图,如下图所示:

4. 详细配置过程
首先在Linux系统上安装nginx,然后在实现代理,具体操作如下:
⑴ 在安装Nginx之前,确保系统已经安装了pcre-devel软件库。因此,先安装该库文件,把光盘挂在上安装。
//挂在光盘
[root@huangzhong ~]# mount /dev/cdrom /media/cdrom
//使用yum进行安装
[root@huangzhong Packages]# yum install pcre-devel-7.8-6.el6.x86_64.rpm

⑵ 安装libevent库文件
//解压安装包
[root@huangzhong ~]# tar -zxvf libevent-2.0.21-stable.tar.gz -C /usr/local/src/
//进入解压后目录下进行编译
[root@huangzhong ~]# cd /usr/local/src/libevent-2.0.21-stable/
[root@huangzhong libevent-2.0.21-stable]# ./configure --prefix=/usr/local/libevent  //指出安装目录
//执行make和make install
[root@huangzhong libevent-2.0.21-stable]# make && make install
//编辑/etc/ld.so.conf.d/libevent.conf指明/usr/local/libevent/lib路径
[root@huangzhong lib]# vim /etc/ld.so.conf.d/libevent.conf
//编辑完后重新加载读取
[root@huangzhong lib]# ldconfig
//查看是否生效
[root@huangzhong lib]# ldconfig -pv |grep libevent
⑶ 安装配置nginx
//解压安装包
[root@huangzhong ~]# tar -zxvf nginx-1.6.0.tar.gz -C /usr/local/src/
//进入解压后的目录进行编译
[root@huangzhong nginx-1.6.0]# ./configure \
> --conf-path=/etc/nginx/nginx.conf \
> --error-log-path=/var/log/nginx/error.log \
> --http-log-path=/var/log/nginx/access.log \
> --pid-path=/var/run/nginx/nginx.pid \
> --lock-path=/var/lock/nginx.lock \
> --user=nginx \
> --group=nginx \
> --with-http_ssl_module \
> --with-http_flv_module \
> --with-http_stub_status_module \
> --with-http_gzip_static_module \
> --http-client-body-temp-path=/var/tmp/nginx/client/ \
> --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
> --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
> --with-pcre
//执行make和make install
[root@huangzhong nginx-1.6.0]# make && make install
//创建组和账号,并把账号加入到组
[root@huangzhong ~]# groupadd -r nginx
[root@huangzhong ~]# useradd -r -g nginx nginx
//进行语法检测
[root@huangzhong ~]# cd /usr/local/nginx/sbin/
[root@huangzhong sbin]# ./nginx  -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] mkdir() "/var/tmp/nginx/client/" failed (2: No such file or directory)  //显示缺少此目录
nginx: configuration file /etc/nginx/nginx.conf test failed
//创建目录
[root@huangzhong sbin]# mkdir -pv /var/tem/nginx/client
//然后启动,并查看端口
[root@huangzhong sbin]# ./nginx
[root@huangzhong sbin]# netstat -tupln |grep nginx
tcp      0     0 0.0.0.0:80    0.0.0.0:*     LISTEN    10418/nginx
然后通过网页访问进行测试,看能否访问到,在访问前首先要关闭防火墙和selinux。
//关闭防火墙和selinux
[root@huangzhong sbin]# service iptables stop
[root@huangzhong sbin]# chkconfig iptables off  //永久关闭
[root@huangzhong sbin]# setenforce 0
通过网页进行访问结果如下:
⑷实现代理功能
//编辑/etc/nginx目录下nginx.conf文件
[root@huangzhong ~]# vim /etc/nginx/nginx.conf
//关闭nginx服务,然后重新启动
[root@huangzhong ~]# pkill nginx
[root@huangzhong ~]# nginx

5. 验证测试
首先打开C盘下windows/system32/Drivers/etc目录下hosts文件,然后把192.168.2.101   www.tyedus.com加入保存关闭,然后通过网页进行访问结果如下:

四、nginx反向代理优化
   
       Nginx反向代理优化其实就是对nginx反向代理进行加速缓存,而加速缓存的配置可以到nginx官网http://nginx.org中的功能模块中去参考样例配置文件。在这里进行配置如下:
//编辑/etc/nginx目录下nginx.conf文件
//创建编辑过程中所用到的目录
[root@huangzhong ~]# mkdir -pv /data/nginx/cache
//关闭nginx服务,然后在重新启动
[root@huangzhong ~]# pkill -9 nginx
[root@huangzhong ~]# nginx
//安装httpd-tools工具使用ab进行测试
[root@huangzhong ~]# yum install httpd-tools
//使用ab工具进行测试
[root@huangzhong ~]# ab -n 10000  http://192.168.2.101/index.html
没有配置加速缓存时测试的结果如下图1所示:
安装配置加速缓存后测试的结果如下图2所示:
通过图1和图2对比可以看出使用加速缓存后访问请求次数远远大于没有加速缓存时的访问请求次数,并且请求时间大大的缩短了。

打赏鼓励作者,期待更多好文!

打赏
17人已打赏

hnsangfor 发表于 2022-10-23 09:32
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
新手595921 发表于 2022-10-23 09:39
  
楼主的文章图文并茂,清晰易懂,看完这波操作可以轻松上手了,如遇到问题再向楼主请教~
阿Q 发表于 2022-10-23 19:29
  
楼主分享的案例很实用,具有典型性,希望有更多这样的干货供我们学习参考,非常感谢!
怪兽君 发表于 2022-10-24 09:34
  
学习一下,感谢楼主分享!!!!
嘀嘀柠柠 发表于 2022-10-24 10:48
  
楼主分析的很详细,不错的实战经验,小白用户一看就懂,非常好的技术干货帖,顶一个!
沧海 发表于 2022-10-24 11:11
  
感谢楼主分享,图文并茂,学习一下
肖振宙 发表于 2022-10-24 15:22
  
逐句地看完这个帖子以后,我的心久久不能平静,震撼啊!为什么会有如此好的帖子!我纵横社区多年,自以为再也不会有任何帖子能打动我,没想到今天看到了如此精妙绝伦的这样一篇帖子。
浮云终日行 发表于 2022-10-24 15:22
  
逐句地看完这个帖子以后,我的心久久不能平静,震撼啊!为什么会有如此好的帖子!我纵横社区多年,自以为再也不会有任何帖子能打动我,没想到今天看到了如此精妙绝伦的这样一篇帖子。
杨振双 发表于 2022-10-24 15:22
  
逐句地看完这个帖子以后,我的心久久不能平静,震撼啊!为什么会有如此好的帖子!我纵横社区多年,自以为再也不会有任何帖子能打动我,没想到今天看到了如此精妙绝伦的这样一篇帖子。
发表新帖
热门标签
全部标签>
每日一问
技术盲盒
干货满满
新版本体验
技术笔记
标准化排查
功能体验
技术晨报
产品连连看
GIF动图学习
信服课堂视频
技术咨询
用户认证
玩转零信任
2023技术争霸赛专题
安装部署配置
运维工具
自助服务平台操作指引
解决方案
VPN 对接
专家分享
社区帮助指南
畅聊IT
答题自测
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
安全攻防
上网策略
测试报告
日志审计
问题分析处理
流量管理
每日一记
云计算知识
原创分享
sangfor周刊
项目案例
SANGFOR资讯
技术顾问
信服故事
SDP百科
功能咨询
终端接入
授权
设备维护
资源访问
地址转换
虚拟机
存储
迁移
加速技术
排障笔记本
产品预警公告
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
深信服技术支持平台
答题榜单公布
纪元平台
通用技术
卧龙计划
华北区拉练
天逸直播
以战代练
秒懂零信任
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

12
185
6

发帖

粉丝

关注

本版达人

LoveTec...

本周分享达人

新手24116...

本周提问达人