Web集群案例实战 -- Nginx 正向代理 & 反向代理
原创
©著作权归作者所有:来自51CTO博客作者褪色的腿毛的原创作品,请联系作者获取转载授权,否则将追究法律责任
Nginx 正向代理 & 反向代理
- 前言
- 一、什么是正向代理、反向代理 ?
- 1、什么是代理服务器 ?
- 2、为什么要使用代理服务器 ?
- 3、正向代理 & 反向代理 ?
- 二、Nginx 正向代理实战
- 三、Nginx 反向代理实战
前言
本环境是基于 Centos 7.8 系统构建Nginx学习环境
具体构建,请参考 Nginx-1.18.0 环境部署
Nginx 作为一款非常优秀的web服务器。不仅仅拥有web服务的功能,它还提供强大的反向代理、负载均衡,已经成为web集群,高可用性能的重要解决方案之一。接下来,我将详细介绍Nginx的正向、反向代理。
一、什么是正向代理、反向代理 ?
1、什么是代理服务器 ?
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机
2、为什么要使用代理服务器 ?
提高访问速度
- 由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。
防火墙作用
- 由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。
通过代理服务器访问不能访问的目标站点
- 互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点
3、正向代理 & 反向代理 ?
正向代理
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
反向代理
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
二、Nginx 正向代理实战
局域网客户端通过nginx正向代理访问互联网
环境准备
role
| host
| ip
| nginx-version
| OS
|
nginx proxy host
| node01
| 192.168.5.11、172.24.8.3
| Nginx-1.18.0
| Centos 7.8
|
nginx web server
| node02
| 192.168.5.12
| Nginx-1.18.0
| Centos 7.8
|
nginx client
| windows 7 Ultimate.
| 172.24.8.4
| ----
| windows 7 Ultimate.
|
node01 配置nginx代理服务
充当web代理服务器
[root@node01 ~]# vim /etc/nginx/conf.d/vhost.conf
server{
listen 8888;
resolver 223.5.5.5;
location / {
proxy_pass http://$http_host$request_uri;
}
}
[root@node01 ~]# systemctl restart nginx
node01 开启路由转发
[root@node01 ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@node01 ~]# sysctl -p
net.ipv4.ip_forward = 1
node02 配置nginx web服务
充当互联网web应用,提供web访问
[root@node02 ~]# vim /usr/local/nginx/conf/vhost.conf
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /Internet_access_page {
root html;
index index.html index.htm;
}
}
[root@node02 ~]# mkdir /usr/local/nginx/html/Internet_access_page/
[root@node02 ~]# echo 'Congratulations, access the Internet!' > /usr/local/nginx/html/Internet_access_page/index.html
[root@node02 ~]# systemctl restart nginx
命令行本地访问:
浏览器本地访问:http://192.168.5.12/Internet_access_page/
windows 7 Ultimate. 配置web 正向代理进入,internet 选项
单机,局域网设置
设置代理服务器地址、端口,单机确定
测试
windows 7 Ultimate. 充当公司内网PC访问互联网web服务器
windows 7 Ultimate. 访问node02 web 服务
成功访问!!!
windows 7 Ultimate. 访问百度 首页站点
成功访问!!!
三、Nginx 反向代理实战
互联网客户端通过nginx反向代理访问公司内部服务器
局域网客户端通过nginx正向代理访问互联网
环境准备
role
| host
| ip
| nginx-version
| OS
|
nginx Load balancing host
| node01
| 192.168.5.11、172.24.8.3
| Nginx-1.18.0
| Centos 7.8
|
nginx web server 01
| node02
| 172.24.8.5
| Nginx-1.18.0
| Centos 7.8
|
nginx web server 02
| node03
| 172.24.8.6
| Nginx-1.18.0
| Centos 7.8
|
nginx client
| windows 7 Ultimate.
| 192.168.5.7
| ----
| windows 7 Ultimate.
|
node02、node03 配置nginx代理服务
充当web内网服务器
--node02
[root@node02 ~]# mkdir /usr/share/nginx/html/{bbs,blog}
[root@node02 ~]# echo "`hostname -I` 'bbs web page...'" > /usr/share/nginx/html/bbs/index.html
[root@node02 ~]# echo "`hostname -I` 'blog web page...'" > /usr/share/nginx/html/blog/index.html
[root@node02 ~]# vim /etc/nginx/conf.d/vhost.conf
server {
listen 80;
server_name bbs.yunjisuan.com;
location /bbs {
root html;
index index.html index.htm;
}
}
server {
listen 80;
server_name blog.yunjisuan.com;
location /bbs {
root html;
index index.html index.htm;
}
}
[root@node02 ~]# systemctl restart nginx
--node03
[root@node03 ~]# mkdir /usr/share/nginx/html/{bbs,blog}
[root@node03 ~]# echo "`hostname -I` 'bbs web page...'" > /usr/share/nginx/html/bbs/index.html
[root@node03 ~]# echo "`hostname -I` 'blog web page...'" > /usr/share/nginx/html/blog/index.html
[root@node03 ~]# vim /etc/nginx/conf.d/vhost.conf
server {
listen 80;
server_name bbs.yunjisuan.com;
location /bbs {
root html;
index index.html index.htm;
}
}
server {
listen 80;
server_name blog.yunjisuan.com;
location /bbs {
root html;
index index.html index.htm;
}
}
[root@node03 ~]# systemctl restart nginx
node01 开启路由转发
[root@node01 ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@node01 ~]# sysctl -p
net.ipv4.ip_forward = 1
node01 配置反正解析
location /bbs {
proxy_pass http://bbs.123.com/bbs/;
}
location /blog {
proxy_pass http://bbs.123.com/blog/;
}
[root@node01 ~]# systemctl restart nginx
node01 hosts解析
172.24.8.5 bbs.yunjisuan.com blog.yunjisuan.com
windows 7 Ultimate. hosts解析
windows 7 Ultimate. 测试
windows 7 Ultimate. 模拟公网用户,访问公司内网web服务器
浏览器访问:
node01通过IP访问web服务