美文网首页
2、什么是反向代理

2、什么是反向代理

作者: alicemum | 来源:发表于2021-02-20 09:30 被阅读0次

反向代理

指的是,当一个客户端发送的请求,想要访问服务器上的内容,但将被该请求先发送到一个代理服务器proxy,这个代理服务器(Nginx)将把请求代理到和自己属于同一个局域网下的内部服务器上。

而用户通过客户端真正想获得的内容就存储在这些内部服务器上,此时Nginx代理服务器承担的角色就是一个中间人,起到分配和沟通的作用。

为什么需要反向代理?

反向代理的优势主要有以下两点

  • 防火墙作用

当你的应用不想直接暴露给客户端(也就是客户端无法直接通过请求访问真正的服务器,只能通过Nginx),通过nginx过滤掉没有权限或者非法的请求,来保障内部服务器的安全

  • 负载均衡

也就上一章提到负载均衡,本质上负载均衡就是反向代理的一种应用场景,可以通过nginx将接收到的客户端请求"均匀地"分配到这个集群中所有的服务器上(具体看负载均衡方式),从而实现服务器压力的负载均衡

如何使用反向代理

我们通过模拟内部服务器的端口启动的nodejs项目设置反向代理到80端口访问。

// nginx.configserver  {  
  listen 80;  
  server_name localhost;  
  location / {    proxy_pass http://127.0.0.1:8000;(upstream)  }
}

在 Nginx 反向代理是,会通过 location 功能匹配指定的 URI,然后把接收到的符合匹配 URI的请求通过 proxy_pass 转移给之前定义好的 upstream 节点池

Https 配置

Nginx 常用来配置Https认证,主要有两个步骤:签署第三方可信任的 SSL 证书 和 配置 HTTPS。

签署第三方可信任的 SSL

配置 HTTPS 要用到私钥 example.key 文件和 example.crt 证书文件,而申请证书文件的时候要用到 example.csr 文件。

Nginx配置https

要开启 HTTPS 服务,在配置文件信息块(server),必须使用监听命令 listen 的 ssl 参数和定义服务器证书文件和私钥文件。

如下所示(此处编辑错误,请见置顶评论)

// nginx.configserver  {  
  listen 80;  
  server_name localhost;  
  location / {    proxy_pass http://127.0.0.1:8000;(upstream)  }
}
  • ssl_certificate:证书的绝对路径

  • ssl_certificate_key:密钥的绝对路径

常用的配置

除了上述的这些,前端还可以用Nginx做些什么,多着呢~下面依依给你讲~

IP白名单

可以配置nginx的白名单,规定有哪些ip可以访问你的服务器,防爬虫必备

简单配置

 server {        
  location / {                
      deny  192.168.0.1; // 禁止该ip访问                
      deny  all; // 禁止所有            
   }  
}

白名单配置

建立白名单 vim /etc/nginx/white_ip.conf ...192.168.0.1 1; 
...复制代码修改nginx配置(nginx.conf)geo $remote_addr $ip_whitelist{    default 0;    include ip.conf;}// geo 指令主要是可以根据指定变量的值映射出一个新变量。如果不指定变量,默认为$remote_addr

为匹配项做白名单设置

server {    
  location / {        
    if ( $ip_whitelist = 0 ){           
       return 403; //不在白名单返回 403       
     }       
     index index.html;        
    root /tmp;    
  }
}

适配PC与移动环境

当用户从移动端打开PC端baidu.com的场景时,将自动跳转指移动端m.baidu.com,本质上是Nginx可以通过内置变量$http_user_agent,获取到请求客户端的userAgent。

从而知道当前用户当前终端是移动端还是PC,进而重定向到H5站还是PC站。

server {
   location / {        //移动、pc设备agent获取        
    if ($http_user_agent ~* '(Android|webOS|iPhone)') {            
        set $mobile_request '1';        
    }        
    if ($mobile_request = '1') {            
        rewrite ^.+ http://m.baidu.com;        
    }    
  }
}

配置gzip

开启Nginx gzip,压缩后,静态资源的大小会大大的减少,从而可以节约大量的带宽,提高传输效率,带来更好的响应和体验。

server{    
  gzip on; //启动    
  gzip_buffers 32 4K;    
  gzip_comp_level 6; //压缩级别,1-10,数字越大压缩的越好    
  gzip_min_length 100; //不压缩临界值,大于100的才压缩,一般不用改   
  gzip_types application/javascript text/css text/xml;    
  gzip_disable "MSIE [1-6]\."; // IE6对Gzip不友好,对Gzip    
  gzip_vary on;}

Nginx配置跨域请求

当出现403跨域错误的时候,还有 No 'Access-Control-Allow-Origin' header is present on the requested resource报错等,需要给Nginx服务器配置响应的header参数:

location / {    
  add_header Access-Control-Allow-Origin *;    
  add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';    
  add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';    
  if ($request_method = 'OPTIONS') {        
      return 204;   
   }
}

相关文章

  • 用5分钟时间说说nginx反向代理和nginx缓存那些事儿

    120秒搞懂 nginx 反向代理 反向代理,什么是反向代理,那么我们肯定想知道,什么是代理(正向代理)image...

  • nginx 的几种用法

    1、反向代理 2、springboot + vue 反向代理

  • 2、什么是反向代理

    反向代理 指的是,当一个客户端发送的请求,想要访问服务器上的内容,但将被该请求先发送到一个代理服务器proxy,这...

  • 全面了解 Nginx 到底能做什么

    Nginx能做什么 1.反向代理 2.负载均衡 3.HTTP服务器(包含动静分离) 4.正向代理 反向代理 反向代...

  • Nginx 的反向代理和负载均衡初涉

    正向代理和反向代理 我们经常看到正向代理和反向代理这两个名词,那么什么是正向代理,什么是反向代理呢?这里我举两个通...

  • Nginx详解三: 配置基础

    经常听人说到一些术语,如反向代理,那么什么是反向代理,如果有反向那是不是也有正向? 什么又是正向代理呢? 什么是正...

  • Nginx详解

    nginx详解 一、什么是正向代理和反向代理? 正向代理image反向代理image URI、URL和URN: U...

  • 使用nodejs做反向代理服务器

    index 使用nodejs做反向代理服务器 __veblen 为什么要反向代理?Nginx/Apache反向代理...

  • 2019-09-16

    反向代理 反向代理应该是Nginx做的最多的一件事了,什么是反向代理呢,以下是百度百科的说法:反向代理(Rever...

  • 利用Nginx实现反向代理和负载均衡

    什么是反向代理? 正向代理(基于客户端的代理) 反向代理(基于服务器端的代理) 反向代理服务器决定哪台服务器提供服...

网友评论

      本文标题:2、什么是反向代理

      本文链接:https://www.haomeiwen.com/subject/myltfltx.html