nginx正向代理

本文详细介绍了Nginx正向代理的概念及其配置步骤,包括代理服务器和Web服务器的设置,以及如何通过正向代理访问被拒绝的资源。在实验环境中,通过配置Nginx实现客户端通过代理服务器成功访问被Web服务器拒绝的图片资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

正向代理是面向客户端的。客户端想要访问一个web服务器,但是客户端的ip被web服务器禁止访问了,这个时候就可以通过代理服务器,客户端通过代理服务器去访问web服务器,web服务器只会知道是代理服务器的ip访问的它,而不知道是客户端

一、正向代理的概念

正向代理(内部网络) 客户端<- - ->代理 ->服务端
1.客户端知道代理服务器的存在
2.一般用户公司内部客户端上网
在这里插入图片描述
3 .反向代理和正向代理的区别

代理的对象不一样,正向代理是面向客户端的,而反向代理是面向服务器的

二、配置正向代理

实验环境:

系统主机名ip地址nginx版本扮演角色
Centos7.4dsk1192.168.100.202Nginx-1.18.0代理服务器
Centos7.4dsk2192.168.100.203Nginx-1.18.0web服务器

实验目的:

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虚拟机进行访问

在这里插入图片描述

在这里插入图片描述
不加代理
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值