Nginx—— 4.反向代理

别来无恙 提交于 2020-02-25 15:46:22

反向代理:在基本服务器的前端加一台代理服务器。客户端将请求发送到服务器(客户端认为是原始服务器,实际是反向代理服务器),反向代理服务器通过一定的策略将请求转发到服务器集群中的服务器上。然后由集群服务器响应结果。反向代理服务去将结果返回给客户端。在反向代理的基础上衍生出负载均衡和高可用。
Proxy和Server同属于一个LAN(局域网中),隐藏了服务端信息。
反向代理,“它代理的是服务端”,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。分布式部署也就是通过部署多台服务器来解决访问人数限制的问题;某宝网站中大部分功能也是直接使用Nginx进行反向代理实现的,并且通过封装Nginx和其他的组件之后形成了Tengine。
反向代理的作用:
保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网。
负载均衡,通过反向代理服务器来优化网站的负载。

1.示例1

IP域名
192.168.72.49 8081.max.com
192.168.72.49 8082.max.com

#upstream表示负载服务器池,定义名字为tomcatserver1 的服务器池
upstream tomcatserver1 {
  server 192.168.72.49:8081;
}
upstream tomcatserver2 {
  server 192.168.72.49:8082;
}
server {
  listen 80;
  server_name 8081.max.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
  proxy_pass http://tomcatserver1;
  index index.html index.htm;

       #下面这两条配置,意思是将http头转发给后端应用,不然你后端应用服务拿客户端IP地址的时候拿到的是nginx代理的地址而不是客户端的。
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
} 
}
server {
  listen 80;
  server_name 8082.max.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
  proxy_pass http://tomcatserver2;
  index index.html index.htm;
} 
} 

2.示例2

nginx.conf
http {
include test.conf;
}

test.conf

#Apache backend 
upstream apachephp  {
    server ip:8080; #Apache
}

#Start www.redis.com.cn
server {
    listen 80;
    server_name  www.test.com.cn;

    access_log  logs/test.access.log ;
    error_log  logs/test.error.log;
    root   html;
    index  index.html index.htm index.php;

    ## send request back to apache ##
    location / {
        proxy_pass  http://test1;

        #Proxy Settings
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
   }
}

————Blueicex 2020/2/25 09:58 blueice1980@126.com

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!