Nginx 正向代理 & 反向代理

  • ​​前言​​
  • ​​一、什么是正向代理、反向代理 ?​​
  • ​​1、什么是代理服务器 ?​​
  • ​​2、为什么要使用代理服务器 ?​​
  • ​​3、正向代理 & 反向代理 ?​​
  • ​​二、Nginx 正向代理实战​​
  • ​​三、Nginx 反向代理实战​​

前言

本环境是基于 Centos 7.8 系统构建Nginx学习环境
具体构建,请参考 ​​Nginx-1.18.0 环境部署​​

Nginx 作为一款非常优秀的web服务器。不仅仅拥有web服务的功能,它还提供强大的反向代理、负载均衡,已经成为web集群,高可用性能的重要解决方案之一。接下来,我将详细介绍Nginx的正向、反向代理。


一、什么是正向代理、反向代理 ?

Web集群案例实战 -- Nginx 正向代理 & 反向代理_nginx

1、什么是代理服务器 ?

代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机

2、为什么要使用代理服务器 ?

提高访问速度

  • 由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。

防火墙作用

  • 由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。

通过代理服务器访问不能访问的目标站点

  • 互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点

3、正向代理 & 反向代理 ?

正向代理

Web集群案例实战 -- Nginx 正向代理 & 反向代理_html_02

正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中

反向代理

Web集群案例实战 -- Nginx 正向代理 & 反向代理_nginx_03

反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给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

命令行本地访问:

Web集群案例实战 -- Nginx 正向代理 & 反向代理_运维_04


浏览器本地访问:http://192.168.5.12/Internet_access_page/

Web集群案例实战 -- Nginx 正向代理 & 反向代理_运维_05


windows 7 Ultimate. 配置web 正向代理进入,internet 选项

Web集群案例实战 -- Nginx 正向代理 & 反向代理_运维_06


单机,局域网设置

Web集群案例实战 -- Nginx 正向代理 & 反向代理_Web集群_07


设置代理服务器地址、端口,单机确定

Web集群案例实战 -- Nginx 正向代理 & 反向代理_Nginx 正向代理、反向代理_08


测试

windows 7 Ultimate. 充当公司内网PC访问互联网web服务器

windows 7 Ultimate. 访问node02 web 服务

成功访问!!!

Web集群案例实战 -- Nginx 正向代理 & 反向代理_html_09


windows 7 Ultimate. 访问百度 首页站点

Web集群案例实战 -- Nginx 正向代理 & 反向代理_Nginx 正向代理、反向代理_10


成功访问!!!

三、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解析

Web集群案例实战 -- Nginx 正向代理 & 反向代理_Nginx 正向代理、反向代理_11


windows 7 Ultimate. 测试

windows 7 Ultimate. 模拟公网用户,访问公司内网web服务器

浏览器访问:

Web集群案例实战 -- Nginx 正向代理 & 反向代理_nginx_12

Web集群案例实战 -- Nginx 正向代理 & 反向代理_nginx_13


node01通过IP访问web服务

Web集群案例实战 -- Nginx 正向代理 & 反向代理_Nginx 正向代理、反向代理_14