• Nginx代理服务——常用的配置语法


    可以到官方查看所有代理的配置语法http://nginx.org/en/docs/http/ngx_http_proxy_module.html

    缓存区

    Syntax:proxy_buffering on | off;

    Default:proxy_buffering on;

    Context:http,server,location

    作用:

    buffer ,即缓冲区,它在 Nginx 上发挥的作用就是 启用一个缓冲区,先在这个缓冲区内进行存储,再把数据发送出去 。和在线观看视频有点类似,先把视频文件缓冲一部分到本地再开始播放。

    若没有 buffer,数据将会直接从 Nginx 传输到客户端。假设如果客户端的加载速度足够快,你可以直接把 buffer 关掉,让数据尽可能快地到达客户端。

    而使用 buffer,Nginx 将会临时存储后端 response 到缓冲区,然后慢慢把数据发送到客户端。启用 buffer 的好处在于可以把数据一次性地发送给目标,相较于即时传输可以节约出这部分带宽。

    顺带一提,Nginx 全局配置中的 tcp_nopush 的作用就是 数据包会累计到一定大小之后才会发送 。而 tcp_nodelay 是尽快发送数据,所以若你启用了 buffer,建议关闭 tcp_nodelay。

    扩展:

    proxy_buffer_size、proxy_buffers、proxy_busy_buffers_size

    跳转重定向

    Syntax:proxy_redirect default; proxy_redirect off; proxy_redirect replacement;

    Default:proxy_redirect default;

    Context:http,server,location

    作用:当上游服务器返回的响应是重定向或刷新请求(如HTTP响应码是301或者302)时,proxy_redirect可以重设HTTP头部的location或refresh字段。假设当前nginx的访问地址为http://192.168.99.100:8080,如果target_servers又有302到192.168.99.100/xxx

    头信息

    Syntax:proxy_set_header field value;

    Default:proxy_set_headert Host $proxy_host; proxy_set_header Connection close;

    Context:http,server,location

    作用:

    允许重新定义或添加字段传递给代理服务器的请求头。该值可以包含文本、变量和它们的组合。在没有定义proxy_set_header时会继承之前定义的值

    扩展:proxy_hide_header、proxy_set_body

    超时

    Syntax:proxy_connect_timeout time;

    Default:proxy_connect_timeout 60s;

    Context:http,server,location

    作用:Nginx 处理的每个请求均有相应的超时设置。如果做好这些超时时间的限定,判定超时后资源被释放,用来处理其他的请求,以此提升 Nginx 的性能。

    扩展:proxy_read_timeout、proxy_send_timeout

    server {
        listen       80;
        server_name  localhost jeson.t.imooc.io;
    
        #charset koi8-r;
        access_log  /var/log/nginx/test_proxy.access.log  main;
    
    
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_redirect default;
            
            proxy_set_header Host $http_host;   #设置host头信息
            proxy_set_header X-Real-IP $remote_addr;        # 获取真实ip
    
            proxy_connect_timeout 30;      # 连接的超时
            proxy_read_timeout 60;
            proxy_send_timeout 60;
    
            proxy_buffer_size 32k;     #设置头信息大小
            proxy_buffering on;        #尽可能读取后端响应信息
            proxy_buffers 4 128k;        
            proxy_busy_buffers_size 256k;
            proxy_max_temp_file_size 256k; # 大小不够的情况下,存放到nginx指定的模块目录下/var/cache/nginx/proxy_temp
    
    
    }
    

    如果有多个代理服务,需要配置多个location。每次都配置那么多语法,这样会造成可读性差。这时候我们可以使用include的方式,把这些配置存起来。首先修改这个当前的配置文件如下

    server {
        listen       80;
        server_name  localhost jeson.t.imooc.io;
    
        #charset koi8-r;
        access_log  /var/log/nginx/test_proxy.access.log  main;
    
        
        location / {
            proxy_pass http://127.0.0.1:8080;
            include proxy_params;   # 配置存储语法的文件名
        }

    新建一个文件 vi proxy_params。将复制好的语法存储起来,重启nginx后,即可生效

    proxy_redirect default;
    
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    
    proxy_connect_timeout 30;
    proxy_send_timeout 60;
    proxy_read_timeout 60;
    
    proxy_buffer_size 32k;
    proxy_buffering on;
    proxy_buffers 4 128k;
    proxy_busy_buffers_size 256k;
    proxy_max_temp_file_size 256k;
    
  • 相关阅读:
    Redis-持久化
    Redis-Sort命令
    Redis-ZSet常用命令
    Redis-Hash
    Redis-Set常用命令
    Redis-List常用命令
    Redis-String常用命令
    访问控制
    c++之旅:多态
    c++之旅:类型的强制转换
  • 原文地址:https://www.cnblogs.com/joy-sir/p/12162666.html
Copyright © 2020-2023  润新知