• Nginx 反向代理


    Nginx 代理服务常见模式

    正向代理

    正向代理类似一个跳板机,代理访问外部资源,正向代理的过程,它 “隐藏” 了真正的请求客户端,服务端不知道真正的客户端是谁(取决于代理服务器是否告知服务端),客户端请求的服务都被代理服务器代替来请求 。

    比如我们国内访问谷歌,直接访问访问不到,我们可以通过一个正向代理服务器访问;请求发到代理服务器,代理服务器能够访问谷歌,这样由代理服务器再请求谷歌,取到返回数据,再返回给我们,这样就能访问谷歌,这就是正向代理 。

    反向代理(转载

    反向代理(Reverse Proxy)实际运行方式是指以代理服务器来接受 internet 上的请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求的客户端,此时代理服务器对外就表现为一个服务器 。

    反向代理隐藏了真实的服务端,当我们请求 www.baidu.com 的时候,就像拨打 10086 一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了 。

    反向代理的作用:

    (1)保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网

    (2)负载均衡,通过反向代理服务器来优化网站的负载

    正向代理和反向代理的区别(转载

    正向代理即是客户端代理,代理客户端,服务端不知道实际发起请求的客户端,

    反向代理即是服务端代理,代理服务端,客户端不知道实际提供服务的服务端 。

    正向代理,proxy 和 client 同属一个 LAN,对 server 透明;反向代理,proxy 和 server 同属一个 LAN,对 client 透明

    Nginx 反向代理

    Nginx 反向代理支持协议

    Nginx 反向代理模块

    反向代理模式(协议) Nginx 配置模块
    http,https,websocket ngx_http_proxy_module
    fastcgi ngx_http_fastcgi_module
    uwsgi ngx_http_uwsgi_module
    grpc ngx_http_v2_module

    Nginx 反向代理语法

    Nginx 负载均衡需要使用 ngx_http_proxy_module 模块 。

    # Example Configuration
    location / {
        proxy_pass       http://localhost:8000;
        proxy_set_header Host      $host;
        proxy_set_header X-Real-IP $remote_addr;						 
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;	   
    }
    # X-Real-IP & X-Forwarded-For 的区别
    # 无论几级代理,每经过一级代理,代理服务器都会把这次请求的来源 IP 追加在 X-Forwarded-For 中
    # 只能传递 本级代理请求 的来源 IP 存放在 X-Real-IP 中
    
    # Directives
    Syntax:	proxy_bind address [transparent] | off;
    Default:	—
    Context:	http, server, location
    This directive appeared in version 0.8.22.
    
    # 实例
    [root@lb01 conf.d]# vi blog.wqh.com.conf 
    server {
            listen  80;
            server_name blog.wqh.com;
            location / {
                    proxy_pass http://172.16.1.8:80;
                    proxy_set_header HOST      $host;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    }
    [root@lb01 conf.d]# vi zh.wqh.com.conf 
    server {
            listen  80;
            server_name wecenter.wqh.com;
            location / {
                    proxy_pass http://172.16.1.8:80;
                    proxy_set_header HOST      $host;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
    }
    

    Nginx 反向代理优化

    # Directives
    # 设置http请求header项传给后端服务器节点,可实现让代理后端服务器节点获取访问客户端用户真实IP地址
    Syntax: proxy_set_header field value;
    Default: proxy_set_header Host $proxy_host;
             proxy_set_header Connection close;
    Context: http, server, location            
    # 表示反向代理与后端节点服务器连接的超时时间 
    Syntax: proxy_connect_timeout time;
    Default: proxy_connect_timeout 60s;
    Context: http, server, location       
    # 代理后端服务器的数据回传时间,在规定时间之内服务器必须传完所有数据,否则断开
    Syntax: proxy_send_timeout time;
    Default: proxy_send_timeout 60s;
    Context: http, server, location      
    # 设置nginx从代理的后端服务器获取信息时间,表示连接建立成功后,nginx等待后端服务器的响应时间 
    Syntax: proxy_read_timeout time;
    Default: proxy_read_timeout 60s;
    Context: http, server, location
    # 设置开启缓冲区,后端返回的内容先放到缓冲区当中,然后再返回给客户端,边收边传,不是全部接收完再传给客户端
    Syntax: proxy_buffering on | off;
    Default: proxy_buffering on;
    Context: http, server, location    
    # 设置缓冲区的大小,默认该缓冲区大小等于指令 proxy_buffers 设置大小
    Syntax: proxy_buffer_size size;
    Default: proxy_buffer_size 4k|8k;
    Context: http, server, location          
    # 设置缓冲区的数量和大小 
    Syntax: proxy_buffers number size;
    Default: proxy_buffers 8 4k|8k;
    Context: http, server, location     
    # 用于指定 客户端请求主体 缓冲区大小
    client_body_buffer_size             
    # 用于设置系统很忙时可以使用的 proxy_buffers 大小,官方推荐 proxy_buffer*2
    proxy_busy_bufers_size        
    # 临时缓存文件大小
    proxy_temp_file_write_size    
    
    
    
    # 实例 
    [root@lb01 ~]# cat /etc/nginx/proxy_params 
    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_connect_timeout 60;
    proxy_send_timeout 60;
    proxy_read_timeout 60;
    proxy_buffering on;
    proxy_buffer_size 4k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;
    
    # 将其包括在 .conf 配置文件中,也可以写在 主配置文件 /etc/nginx/nginx.conf 中
    [root@lb01 ~]# cat /etc/nginx/conf.d/blog.wqh.com.conf 
    server {
            listen  80;
            server_name blog.wqh.com;
            location / {
                    proxy_pass http://172.16.1.8:80;
    	        include proxy_params;
            }
    }
    [root@lb01 ~]# cat /etc/nginx/conf.d/wecenter.wqh.com.conf 
    server {
            listen  80;
            server_name wecenter.wqh.com;
            location / {
                    proxy_pass http://172.16.1.8:80;
    	        include proxy_params;
            }
    }
    
  • 相关阅读:
    MQTT的编译和安装(mosquitto)
    四、固件分析-固件逆向
    三、固件分析-固件提取
    二、硬件分析-电路分析
    一、硬件分析
    gdb调试
    AES加密中遇到的坑
    多线程中快速定位段错误位置
    理想的数据加密流程
    Centos进入单用户修改root密码
  • 原文地址:https://www.cnblogs.com/zzzwqh/p/12961684.html
Copyright © 2020-2023  润新知