Nginx正向与反向代理
Posted cwmizlp
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx正向与反向代理相关的知识,希望对你有一定的参考价值。
nginx 主要用于反向代理与负载均衡
什么是代理服务器(Proxy Serve)?
提供代理服务的电脑系统或其它类型的网络终端,代替网络用户去取得网络信息。
为什么使用代理服务器?
-
提高访问速度
由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门网站能明显提高访问速度。 -
防火墙作用
由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可以在代理服务器上设限,过滤掉某些不安全信息。同时正向代理中上网者可以隐藏自己的IP,免受攻击。 -
突破访问限制
互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的FQ浏览器就是利用了代理服务器,可以直接访问外网。
正向代理
正向代理(forward proxy) ,一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并制定目标(原始服务器),然后代理向原始服务器转发请求并将获得的内容返回给客户端,客户端才能使用正向代理。我们平时说的代理就是指正向代理。
简单一点:A向C借钱,由于一些情况不能直接向C借钱,于是A想了一个办法,他让B去向C借钱,这样B就代替A向C借钱,A就得到了C的钱,C并不知道A的存在,B就充当了A的代理人的角色
反向代理
反向代理(Reverse Proxy),以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器。
理解起来有些抽象,可以这么说:A向B借钱,B没有拿自己的钱,而是悄悄地向C借钱,拿到钱之后再交给A,A以为是B的钱,他并不知道C的存在。
正向代理和反向代理的区别
- 位置不同
正向代理,架设在客户机和目标主机之间;
反向代理,架设在服务器端; - 代理对象不同
正向代理,代理客户端,服务端不知道实际发起请求的客户端;
反向代理,代理服务端,客户端不知道实际提供服务的服务端;
- 备注:正向代理–HTTP代理为多个人提供FQ服务;反向代理–百度外卖为多个商户提供平台给某个用户提供外卖服务。
- 用途不同
正向代理,为在防火墙内的局域网客户端提供访问Internet的途径;
反向代理,将防火墙后面的服务器提供给Internet访问; - 安全性不同
正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为授权的客户端提供服务;
反向代理都对外都是透明的,访问者并不知道自己访问的是哪一个代理。
正向代理的应用
1. 访问原来无法访问的资源
2. 用作缓存,加速访问速度
3. 对客户端访问授权,上网进行认证
4. 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理的应用
1. 保护内网安全
2. 负载均衡
3. 缓存,减少服务器的压力
Nginx作为最近较火的反向代理服务器,安装在目的主机端,主要用于转发客户机请求,后台有多个http服务器提供服务,nginx的功能就是把请求转发给后台的服务器,决定哪台目标主机来处理当前请求。
可以看看 https://www.cnblogs.com/Anker/p/6056540.html
文章出自 https://blog.csdn.net/zt15732625878/article/details/78941268
下载Nginx后,解压如下
nginx.conf 配置如下
1 ########### 每个指令必须有分号结束。################# 2 #user administrator administrators; #配置用户或者组,默认为nobody nobody。 3 #worker_processes 2; #允许生成的进程数,默认为1 4 #pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址 5 error_log logs/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg 6 events { 7 accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on 8 multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off 9 #use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport 10 worker_connections 1024; #最大连接数,默认为512 11 } 12 http { 13 include mime.types; #文件扩展名与文件类型映射表 14 default_type application/octet-stream; #默认文件类型,默认为text/plain 15 #access_log off; #取消服务日志 16 log_format myFormat ‘$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for‘; #自定义格式 17 access_log logs/access.log myFormat; #combined为日志格式的默认值 18 sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。 19 sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。 20 keepalive_timeout 10; #连接超时时间,默认为75s,可以在http,server,location块。 21 proxy_connect_timeout 5; #nginx服务器与被代理的服务器建立连接的超时时间,默认60秒 22 proxy_intercept_errors on; #如果被代理服务器返回的状态码为400或者大于400,设置的error_page配置起作用。默认为off。 23 24 upstream mysvr { 25 server 192.168.3.121:9985; 26 #server 192.168.3.211:80 backup; #热备 当一台服务器发生事故时,才启用第二台服务器给提供服务 27 } 28 error_page 504 https://www.baidu.com; #错误页 29 30 31 server { 32 keepalive_requests 120; #单连接请求上限次数。 33 listen 10000; #监听端口 34 server_name 127.0.0.1; #监听地址 35 location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。 36 #root path; #根目录 37 #index vv.txt; #设置默认页 38 proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表 39 40 #deny 127.0.0.2; #拒绝的ip 41 #allow 127.0.0.1; #允许的ip 42 } 43 } 44 }
IIS中 127.0.0.1:10000 不需要设置网点,访问此网址后 自动跳转 192.168.3.121:9985
配置详解可以看看 https://www.cnblogs.com/knowledgesea/p/5175711.html 和 https://blog.csdn.net/kingscoming/article/details/79042874
以上是关于Nginx正向与反向代理的主要内容,如果未能解决你的问题,请参考以下文章