前言
正向代理是面向客户端的。客户端想要访问一个web服务器,但是客户端的ip被web服务器禁止访问了,这个时候就可以通过代理服务器,客户端通过代理服务器去访问web服务器,web服务器只会知道是代理服务器的ip访问的它,而不知道是客户端
一、正向代理的概念
正向代理(内部网络) 客户端<- - ->代理 ->服务端
1.客户端知道代理服务器的存在
2.一般用户公司内部客户端上网
3 .反向代理和正向代理的区别
代理的对象不一样,正向代理是面向客户端的,而反向代理是面向服务器的
二、配置正向代理
实验环境:
系统 | 主机名 | ip地址 | nginx版本 | 扮演角色 |
---|---|---|---|---|
Centos7.4 | dsk1 | 192.168.100.202 | Nginx-1.18.0 | 代理服务器 |
Centos7.4 | dsk2 | 192.168.100.203 | Nginx-1.18.0 | web服务器 |
实验目的:
web服务器拒绝本机访问指定资源的图片,本机通过代理可以成功访问web服务器指定资源的图片
(1)上传Nginx包,安装Nginx
链接: https://pan.baidu.com/s/1zTKqOTv7lkkc-sWpy_xDXw 提取码: dqqq
dsk1的操作
[root@7-10 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@7-10 ~]# yum -y install zlib-devel pcre-devel #安装依赖包
[root@7-10 ~]#tar zxf nginx-1.12.0.tar.gz -C /usr/src/
[root@7-10 ~]#cd /usr/src/nginx-1.12.0/
[root@7-10 nginx-1.12.0]#useradd -M -s /sbin/nologin nginx
[root@7-10 nginx-1.12.0]#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module && make && make install
[root@7-10 nginx-1.12.0]#ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@7-10 ~]#vim /usr/lib/systemd/system/nginx.service #编写启动脚本
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#保存退出
[root@7-10 ~]#systemctl start nginx #开启nginx
[root@7-10 ~]#netstat -anpt | grep 80 #检查端口
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3706/nginx: master
(2)修改配置文件,配置正向代理
[root@7-10 nginx-1.12.0]#cd /usr/local/nginx/conf/
[root@7-10 conf]# cp nginx.conf nginx.conf.bak #备份一份配置文件
[root@7-10 conf]# sed -i '/#/d' nginx.conf #删除注释和空行
[root@7-10 conf]# sed -i '/^$/d' nginx.conf
[root@7-10 conf]# vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
proxy_pass http://$http_host$request_uri; #利用变量配置跳转,灵活一点
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #被访问的web服务器可以看到客户端的真实ip
}
}
}
$http_host:
这是一个Nginx的内建变量,变量值就是客户端请求的目标ip地址,例如,客户端已经指向了代理,然后访问1.1.1.1,那么这个变量的值就是.1.1.1,同理访问2.2.2.2那么这个变量值就是2.2.2.2
$request_uri:
这是一个Nginx的内建变量,变量值就是客户端访问的资源,例如,客户端已经指向了代理,然后访问http://1.1.1.1/那么这个变量值就是/,同理访问http://1.1.1.1/aaa那么这个值就变成了/aaa
$http_host :
Nginx的内建变量,值为请求客户端请求代理服务器的ip
$remote_addr:
Nginx的内建变量,值为请求客户端的ip
dsk2的操作
[root@7-11 ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
******(2)优化Nginx
[root@7-11 ~]# yum -y install zlib-devel pcre-devel
。。。。。。
完毕!
[root@7-11 ~]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@7-11 ~]# useradd -M -s /sbin/nologin nginx
[root@7-11~]# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#保存退出
[root@7-11 ~]# systemctl start nginx
[root@7-11 ~]# netstat -antp | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 14885/nginx: master
******(3)修改配置文件
[root@7-11 ~]# cd /usr/local/nginx/conf/
[root@7-11 conf]# cp nginx.conf nginx.conf.bak
[root@7-11 conf]# sed -i '/#/d' nginx.conf
[root@7-11 conf]# sed -i '/^$/d' nginx.conf
[root@7-11 conf]# vim nginx.conf #修改
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name www.aaa.com;
index index.html index.htm;
root html;
location ~ .*\.(jpg|gif|png)$ { #匹配以.jpg、gif、png结尾的资源
allow 192.168.100.202;
deny all;
root html;
}
}
}
[root@7-11 conf]# systemctl restart nginx
******(4)编写页面
[root@7-11 html]# vim index.html
aaaaaa
<img src="1.png"\>
[root@7-11 html]# rz #上传照片
z waiting to receive.**B0100000023be50
[root@7-11 html]# ls
50x.html index.html iron_man-006.jpg
[root@7-11 html]# mv iron_man-006.jpg 1.png
使用本机或者开一台win7虚拟机进行访问
不加代理