• 说一说Nginx Proxy配置


    代理模块

    ngx_http_proxy_module
    

    代理配置

    代理
    Syntax:     proxy_pass URL;                #代理的后端服务器URL
    Default:    —
    Context:    location, if in location, limit_except
    
    头信息
    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_read_timeout time;
    Default:    proxy_read_timeout 60s;
    Context:    http, server, location
    
    Syntax:     proxy_send_timeout time; #nginx进程向fastcgi进程发送request的整个过程的超时时间
    Default:    proxy_send_timeout 60s;
    Context:    http, server, location
    

    启用nginx proxy代理

    虚拟两台nginx服务器192.168.72.145 192.168.72.159

    nginx01服务器有网站内容,作为公司网站服务器

    nginx02服务器作为代理服务器!

    注意:proxy_pass http://填写nginx01服务器地址

    nginx proxy 具体配置详解

    proxy_pass :真实服务器的地址,可以是ip也可以是域名和url地址
    proxy_set_header:重新定义或者添加发往后端服务器的请求头
    proxy_set_header X-Real-IP :启用客户端真实地址(否则日志中显示的是代理在访问网站)
    proxy_set_header X-Forwarded-For:记录代理地址
    proxy_connect_timeout:后端服务器连接的超时时间发起三次握手等候响应超时时间
    proxy_send_timeout:后端服务器数据回传时间就是在规定时间之内后端服务器必须传完所有的数据
    proxy_read_timeout :nginx接收upstream(上游/真实) server数据超时, 默认60s, 如果连续的60s内没有收到1个字节, 连接关闭。像长连接
    

    使用PC客户端访问nginx02服务器地址

    看web应用服务器(nginx01)日志文件


    可以看到代理服务器地址,但是客户机请求来源地址没有显示。

    关于nginx获取真实ip,proxy_set_head设置头部信息的理解

    注意
    关于客户端请求web服务的反向代理和负载均衡在web服务器中的日志文件中显示请求来源ip问题,需详细了解proxy_set_header X-Real-IP、proxy_set_header X-Forwarded-For配置。

    $proxy_add_x_forwarded_for
    $http_x_forwarded_for
    

    这两个的变量的值的区别,就在于,proxy_add_x_forwarded_for 比http_x_forwarded_for 多了一个$remote_addr的值,但是$remote_addr 只能获取到与服务器本身直连的上层请求ip,所以设置$remote_addr一般都是设置第一个代理上面。但是问题是,有时候是通过cdn访问过来的,那么后面web服务器获取到的,永远都是cdn 的ip 而非真是用户ip,那么这个时候就要用到X-FORward—for了,这个变量的意思,其实就像是链路反追踪,从客户的真实ip为起点,穿过多层级的proxy ,最终到达web 服务器,都会记录下来。所以在获取用户真实ip的时候,一般就可以设置成,proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 这样就能获取所有的代理ip 客户ip 。

    参考
    --https://blog.51cto.com/wks97/2084302
    --https://blog.csdn.net/ywh147/article/details/9275145?utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~BlogCommendFromMachineLearnPai2~default-1.control

  • 相关阅读:
    构建之法阅读笔记03
    构建之法阅读笔记02
    构建之法读书笔记01
    梦断代码读书笔记03
    背包九讲问题
    C-01背包问题
    C-最长回文子串(2)
    C-最长回文子串(1)
    C语言顺序栈实现
    带头结点头部插入创建链表
  • 原文地址:https://www.cnblogs.com/homjun/p/14846116.html
Copyright © 2020-2023  润新知