FX168尉视:瑞幸咖啡为何自爆造假?中国互联网企业恐面临融资难题

代理分为正向代理和反向代理,本次就来演示一下Nginx配置正向代理和反向代理的场景。 顺便讲解一下正向代理和反向代理的区别正向代理和反向代理的区别

Nginx 反向代理与正向代理

Nginx/ B | z K


首先,我们需w X ]要知道什么是反向代理和正向代理区别

一、正向代理

Nginx 反向代理与正向代理

正向代理简单的来说就是我们的代理服务器代替用户去请求后端节点

nginx正向代理代替工具还有goproxyL p % 7 ^ V

为什么要使用正向代理

  • 用户无法直接访问服务器B (常见例子就是我们使用的Shadowsocks)
Nginx 反向代理与正向代理

  • Cache缓存作用

cache缓存技术和代Y Y d V [理服务技术是紧密联系的(不只是正向代理使用cache缓存,反向代理同时也使用缓存)简单的来说就是用户A访问了代理服务器,那么代理服务器会将用户A的数据保存一段时间,如果该时间段呢用户B同时也访问了代理服务器,那么代D g G - ) 2理服务器将不会直接请求服务器B,而是直接将缓存直接返回给用户A

  • 拦截访问
Nginx 反向代理与正向代理

假设用户A和用户B都设置了代理服务器,用户A允` L ?许访问互联网,而用户B不V E 6 7允许防火互联网(这个代理服务器Z上做限制)这样用户A因为授权,可以通过代理服务器访问到服务器C,而用户B因为没有被代理服务器授权时,数据包会直接丢弃

  • 隐藏访问者
Nginx 反向代理与正向代理

我们可以看出服务器C并9 9 t : - 3 e不知道访问自己的实际是用户A,因为代理服务器Z代替用户A去直接与服务器C进行交互,如果代理服务器Z完全被用户A控制(或不完全控T q Q t m制)会惯以肉鸡术语称呼

  • 正向代理总结

正向代理是一个位于客户端和原始服务器(origin server)之前的服务q d T v器,为了从原始服务器获取内容,客户端向代理发送一个请求并指定目标,然后代理服务器向原始服务器转交请求并将获得的内容返回给客户端。客户端必须设置正向代理服务器。(类似于我们的ss服务)

二、反向代理

反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不B 4 t H X z需要进行任何特别的设置。客户端向; = - 0 L 2 - B l反向代理发送普通请求,接着n X x f - 4 f反向代理将判断向何处(后端节点)转交请求,并将获得的内容返回给客户端

通常的代理服务器,只用于代理内部网络对. B q v p LInternet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到- e S 代理服务器中,当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式成为反向代理服务

Nginx 反向代理与正向代理

  • 透明代理

透明代理的意思是客户端根本不需要指定有代理服务器的存在,改变你的request f! Q M G U 6 g d Yields(报文),并@ - U = }会传送真实IP,注意加密的透明代理则属于匿名代理,意思是不用设置代理了。透明代理实践的例子就是很多# l # @ _公司所使用的行为管理软件

Nginx 反向代理与正向代理

当用户A和用户B并不a 9 x D 9 C u知道行为管理设备充当透明代理行为,用) 4 = , s户A或者用户B向服务器A或者服务器B提交请求的时候,透明代U 0 X f w O 3理设备根据自身策略拦截并修改用户A或B的报文,并作为实际的请求方,向服务器A或者B发送请求,当接受信息回传,透明代理再根据自身的设置把允许的保存发回至用户A或V l K - k x 7 l wB,如果透明代理设置不允许访问服务器B,那么用户A或者用户B就不会得到服务器B的数据

三、正向代理配置测试

我们使用nginx代理上网为例子进行演示nginx正向代理

下载并安装nginx (正向代理不需要单独的模块)

Nginx 反向代理与正向代理

我们使用2台服务器都进行如下操作

10.4.82.140 tomcat.i4t.com 为后端应用服5 * + ] U g 8 8务(域名为t) H M bomcat.i4t.com)

10.4.827 / : a g c.142 nginx.i4t.com 为代理服务器(域名为nginx+ F 4 w.i4t.com)

请仔细阅读本段 首先我们代理( ; L $ c | 9 l服务器几乎不进行任何配置,只是一A 0 3 u Q a个普通的nginx代理,所有I } : | o Q x修改nginx的配置都是在代理服务器上添加

两台nginx默认配置如下

1.nginx版本没有太大要求
wget http://nginx.orgF o | B B = W/download/nginx-1.10.3.tar.gz

#按照依赖包
yum install -y gcc glibc gcc-ce O d m 2 S g++ prce-devel openssl-devel pcre-devel
useradd -s /sbin/nologin nginx -M
t8 I = r . $a( Z c F l 9r xf nginx-1.10.3.tar.gz && cd nginx-1.10.3

#编译
./configure --prefix=/usr/local/nginx-1.10.3 --user=nginx --group=nginx --with-http_s/ ( H { v &sl_module --with-I d p X , x q Lhttp_stub_status_module

检查
/usr/loca/nginx/sbin/nginx -t

启动
/usr/localC x 9/nginx/sbin/nginx

查看服务h W K器是否启动
netstat -lntp|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7058/nginx: master

接下来是配置nginx代理

首先我们先配置2台nginx服务器

1.先配置nginx.i4t.com nginx信息

#配置10.4.82.142 后端服务器
cat /usr/loc4 C 9 ( Tal/nginx/conf/nginx.conf
userx X ` , p } H % nginx;
worker_pro{ R v k ocesses 1m P 3 Q;


events {
worker_connections 1024;
}


http {
incl| M ;ude mif Q ~ ? 4 u } w Vme.types;
default_type application/octet-stream;

log_format main \= $ y ; ^ 3 u 6 6'$remote_a* s ? | O ) z , qddr - $remote_useB 6 | i v U 2r [$time_localM o 0 4 # P e] \"$requez d _ R t @ &st\"7 g 8 + \'
\'$6 _ R bstatus $bodyE N ( / z N_bytes_sent \"$http_referer\" \'
\'\"$http_user_agent\" \"$http_x_forwarded_for\"\';
access_log logs/access.log mainR 1 1 p _ } R N 1;

sendfile on;
tcp_nopush on;
keepalive_timeout 65;

gzip on;

server {


listen 80;
serverG S y * 8 ! v f @_name nginx.i4t.^ ? ; .com;


locaX Q v = { ( ? htion / {
root /usr/local/nginx/html;

}

}

}

echo \"nginx.i4t.com\" >/usX 6 Q mr/local/nginx/html/index.html

/usr/local/ngC m # 1 N oinx/sbin/nginx -s reload

此时nginx.i4t.com域名访问如下

Nginx 反向代理与正向代理

接下来配置后端服务器

代理服务器默认配置

10.4.82.140

以下是后端服务器默认配置

user  nginx;
worker_processes 1;

events {
work- d b ber_connections 1024;
}


http {
include mime.types;l w h
d[ # @ |efault_type application/octet-stream;

ly U ; 6 r J uog_format main \'$remote_addr - $remote_user [$time_local] \"$request\" \'
\'$status $body_bytes_sent \m E f"$http_referer\" \'
\'\"$http_user_agent\" \"$http_x_forwarded_for\"\'7 0 Q P # 3 7 # k;

access_log logs/access.log main;

sendfile onO D ( [ ~ ` %;
keepalive_timeout 65;


server {
listen 80;
server_name tomcat.i4t.com;

location / {
root html;
index index_ 3 : K.html index.htm;
}
}
}

echo \" tomcaW 6 `t.i4t.com\O e } I H P k" >O 9 & F s } 9/usr/local/nginx/html/in[ r R P *dex.html
/usr/A w ! local/nginx/sbin/nginx -s reload

tomcat.i4t.com后端服务器的访问内容如下

Nginx 反向代理与正向代理

接下来我们将tY H 0 ~omcat.i4t.coB d v O mm 也就是10.4.82.140进行配置权限

#只允许10.4.R P g l U V82.142访问
cat /usr) 9 s/local/nginxa s k/conf/nginx.conf
user nginx;
worker_processes 1;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type applicatil s x @ o xon/octet-stream;

log_foP w + . 6 1 | y Grmat main \'$remote_addr -] e K } | 8 # $remote_user [j = f 9$time_local] \"$request\" \'
4 + W \'$status $body_bytes_sent \"$http_refereC [ : ; i T ` Ur\" \'
\'\"$httB 0 J w = j v 5 rp_user_agent\" \"$http_4 q [ _ 7 K a = ix_forwarded_f] ! * J O e 2 1 {orI 1 3 0 = =\"\';
access_log logs/access.log main;

sendfile on;
tcp_nopush on;
keepalive_timeout 65;7 / S I K

gzip on;

server {


listen 80;
server_n! Z 8 c E 0 % 7 fame tomcat.i4t.com;

resolver 8.8.8.8;
location / {
proxy_pass $scheme://$host$request_uz m d - s z 5ri;
if ( $remote_addr !~* \"10.4.82.142\") {
return 403;
}
root /uV m W 5 - 2 H 2 3sr/local/ngino d _ Y L x + + wx_ ; 4 2 D 1 Y #/html;

}

}

}

#proxy_pass $scheme://$host(请求的域名)$request_uri; 域名后面参f ` K X } w M M H
#{ w _ v - 4 H - 8resolver DNS地址,可以不写

我们可以看到我们现在电脑已经无法访问tomcat.i4t.com,需要注意的是,我们只是修改了tomcat.i4t.com的代理,nginx.i4t.com依旧可以正常访问的

Nginx 反向代理与正向代理

现在我们进行代理配置o Y U 9 8 ! A G l

  • windows配置如下

IE-->Internet选项-->连接-->局域q G : . [ 8 , ! *网设置-->$ A w 3;代理服务器

Nginx 反向代理与正向代理

  • mac设置如下
Nginx 反向代理与正向代理

Nginx 反向代理与正向代理

  • Linux
exporx P ] # r x O $ dt http_proxy=http://10.4.82.142:80
wget http://tomcat.i4t.com
Nginx 反向代理与正向代理

这时候我们访问tomcat.i4t8 t 8 ~ L l 4 (.com就是200,状态

Nginx 反向代理与正向代理

四、反向代理配置测试

安装和上面编译安装一$ g $ T W s 样,没有特殊模块。只需要j [ s % } * 6 x修改配置文件

cat /usr/local/nginx/conf/nginx.conf
user www;
work9 6 I ^ U 7er_processes 1;


events {
workea X Pr_connections 1024;
}


http {
include mime.types;
default_type application/octet-stt c e O d $ ^ ream;

log_format main \'$remote_addr - $remote_user [$time_local] \"$request\" \'
\'$status $body_bytes_sent \"$http_refa K - X ( G aerer\" \'
\'\"$| Q y Vhttp_user_agentH J E #\" \"$httr s 8 V .p_x_forwarded_for\"\';
access_log logs/access.log main;

sendfile on;
tcp_nopush on;
keepalive_timew G M :out 65;

gzip on;

servO ) L , 2 + cer {


listen 80;
server_n@ O T 8ame nginx.i4t.com;

location / {
proxy_pass http://abcdockF F oer;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $pr% N K 6 k u $ .oxy_add_x_forwarded_for;

}

}


upstream abcdocker {
server 10.4.82.140:8080;
server 127.0.0.1:8080;
}

}k ~ d } x k


#proxy_pass 代理节点,可以用ip+端口
#upstream 后面写名称
#server 后端节点名称

访问验证,我们访问nginx.i4t.com域名打开的是tomcat后端节点

Nginx 反向代理与正向代理

请注意缓存(googd 9 c U mle浏览器缓存不是很好清理)

上一篇

关于海思麒麟芯片独立,请华为看清事实,莫要入坑!

下一篇

三星堆出土了很多文物,为何不继续挖了?专家:看看出土的是啥

你也可能喜欢

  • 暂无相关文章!

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
返回顶部