Nginx代理配置

一、nginx进阶

1.proxy代理

1.1 代理架构图

定义:正向代理是指客户端通过代理服务器来访问目标服务器,目标服务器不知道真正的客户端是谁,只知道请求来自于代理服务器。

特点和作用

  1. 隐藏客户端身份:正向代理可以隐藏客户端的真实IP地址,保护客户端的隐私。
  2. 访问控制:正向代理可以根据一定的规则限制或允许客户端的访问请求,实现访问控制功能。
  3. 突破网络限制:在某些地区或网络环境下,用户可能无法直接访问某些网站或服务。此时,可以通过设置正向代理来突破这些限制,实现访问。
  4. 缓存加速:正向代理可以缓存经常访问的页面或资源,提高访问速度,减轻服务器负担。
  5. 网络安全:通过正向代理,企业可以监控和管理员工的网络访问行为,防止敏感数据泄露。

定义:反向代理是指客户端通过代理服务器来访问目标服务器集群,客户端不知道真正的目标服务器是哪一个,只知道请求发送到了代理服务器。

特点和作用

  1. 隐藏服务器真实地址:反向代理可以隐藏目标服务器的真实IP地址,增加服务器的安全性。
  2. 负载均衡:反向代理服务器可以根据后端服务器的负载情况,将客户端请求分发到不同的服务器上,实现负载均衡,提高系统性能和稳定性。
  3. 安全防护:反向代理可以作为防火墙,过滤恶意请求和响应,提高系统的安全性。
  4. 缓存服务:反向代理可以缓存静态资源,提高访问速度,同时减轻后端服务器的负载。
  5. SSL加速:将SSL加密工作交由配备了SSL硬件加速器的反向代理来完成,提高加密效率。

1.2 nginx代理模块

常用指令

代理: 

proxy_pass

  • 语法proxy_pass httpd://192.168.105.78:81;  代理的后端服务器地址(URL)
  • 位置locationif in locationlimit_except
  • 作用:设置代理服务器将请求转发到的协议(http或https)、地址(主机名或IP)以及可选的URI。此指令是proxy模块的核心,用于指定请求应被转发到的后端服务器。

头信息: 

proxy_set_header                设置真实客户端地址

  • 语法
    location  /{
            # 设置 Host 头部
        proxy_set_header Host $http_host;  
            # 设置客户端真实 IP 地址(请求的客户机的真实ip)
        proxy_set_header X-Real-IP $remote_addr;  
            # 设置请求的来源 IP 地址链(转发服务器的ip)
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            
            # 自定义其他头部
        proxy_set_header Custom-Header "SomeValue";
    
    
            # 其他配置...
    }

$host 变量包含了原始请求中的主机名和端口(如果有的话

$remote_addr 变量包含了发起请求的客户端的 IP 地址。 

$proxy_add_x_forwarded_for 变量会自动处理 X-Forwarded-For 头部。

Custom-Header 是一个自定义的 HTTP 头部,其值被设置为 "SomeValue" 

  • 位置httpserverlocation
  • 作用:用于设置向后端服务器转发请求时携带的 HTTP 头部的指令。这个指令允许你自定义或修改请求头,以便后端服务器能够接收到必要的信息或根据这些信息做出正确的响应。

proxy_redirect

  • 语法proxy_redirect [ default|off|redirect replacement ];    # 转发时是否使用默认端口
  • 位置httpserverlocation
  • 作用:用于修改后端服务器返回的响应头中的Location和Refresh头字段,以确保重定向URL正确无误。

超时:  

proxy_connect_timeout                链接超时

  • 语法proxy_connect_timeout 5s;   # 设置连接超时时间为5秒
  • 位置httpserverlocation
  • 作用:设置 Nginx与后端服务器建立连接的超时时间。

proxy_read_timeout                

  • 语法proxy_read_timeout 60s;   # 设置读取超时时间为60秒
  • 位置httpserverlocation
  • 作用:设置 Nginx从后端服务器读取响应的超时时间。

proxy_send_timeout

  • 语法proxy_send_timeout 10s;    # 设置发送超时时间为10秒
  • 位置httpserverlocation  
  • 作用:设置 Nginx向后端服务器发送的请求超时时间。

 缓冲区:

proxy_buffering                 缓冲开关

  • 语法: proxy_buffering  [ on | off ];             
  • 位置:http,server, location
  • 作用:proxy_buffering开启的情况下,nignx会把后端返回的内容先放到缓冲区当中,然后再返回给客户端(边收边传,不是全部接收完再传给客户端)。 

proxy_buffer_size                缓冲区大小

  • 语法proxy_buffer_size 4k|8k;
  • 位置httpserverlocation
  • 作用:设置读取后端服务器响应的第一个响应头的缓冲区大小。

proxy_buffers                缓冲区数量

  • 语法proxy_busy_buffers 8 4k|8k;
  • 位置httpserverlocation
  • 作用:设置用于读取后端服务器响应的缓冲区数量和大小。

proxy_busy_buffers _size         忙碌的缓冲区大小

  • 语法proxy_busy_buffers_size  8k|16k;
  • 位置:http,server,location 
  • 作用:控制同时传递给客户端的buffer数量

1.3  操作

1.3.1  配置nginx-proxy代理机

目的:用192.168.105.69作为nginx-proxy代理服务器,在真机浏览器上通过192.168.105.69代理访问192.168.105.71上nginx的网页

  • 配置nginx-proxy代理:

代码如下:

   # /etc/nginx/nginx.d  

     location /{
-----------------------代理----------------------------------------------
                proxy_pass http://192.168.105.71:80;
                proxy_redirect default;
------------------------头信息-------------------------------------------
                proxy_set_header Host $http_host;
                proxy_set_header X-ReallP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-------------------------超时-------------------------------------------
                proxy_connect_timeout 30s;
                proxy_send_timeout 60s;
                proxy_read_timeout 60s;
-------------------------缓冲区------------------------------------------
                proxy_buffering on;
                proxy_buffer_size 32k;
                proxy_buffers 4 128k;
                proxy_busy_buffers_size 256k;
                proxy_max_temp_file_size 256k;
        }

1.3.2  设置nginx-proxy代理缓存 

proxy_cache                (缓存开关)

  • 语法:proxy_cache  zone_name | off;        指令后接
  • 位置:http,server,location
  • 作用:用于缓存从上游服务器(如后端应用服务器)接收到的响应内容,通过缓存,Nginx 能够减少对上游服务器的请求次数,从而加快响应速度,减轻上游服务器的负载。
  • 开启缓存
  • http {
        proxy_cache_path /app/qf/cache levels=1:2 keys_zone=proxy_cache:10m max_size=10g inactive=60m use_temp_path=off   
                    # 缓存用几级目录存储
        
    
        # 其他配置...
    server {
     
        location /{
    -------------------------------代理设置----------------------------------------------
                proxy_pass http://192.168.105.71:80;     * 代理哪台机器
                proxy_redirect default;                  * 自动调整来自被代理服务器的重定向响应
    
    -------------------------------头信息设置-------------------------------------------
                proxy_set_header Host $http_host;
                proxy_set_header X-ReallP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    
    -------------------------------超时设置-------------------------------------------
                proxy_connect_timeout 30s;
                proxy_send_timeout 60s;
                proxy_read_timeout 60s;
    
    -------------------------------缓冲区设置------------------------------------------
                proxy_buffering on;
                proxy_buffer_size 32k;
                proxy_buffers 4 128k;
                proxy_busy_buffers_size 256k;
                proxy_max_temp_file_size 256k;
    
    -------------------------------开启缓存----------------------------------------------
                proxy_cache proxy_cache;       * 启用缓存,并指定使用之前定义的proxy_cache区域
                proxy_cache_valid 200 304 12h;
                proxy_cache_valid any 10m;
    
                proxy_cache_key $host$uri$is_args$args;
                add_header Nginx-Cache "$upstream_cache_status";
                proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    ----------------------------------------------------------------------------------
       }
     }
    
    }

  • nginx -t 验证语法是否正确,重启nginx 
  • 实验:

nginx代理配置结束,访问代理机器ip 192.168.105.69 即可查看到 192.168.105.71 上的网页


  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: nginx代理配置文件可以包含一个或多个 `server` 块,每个 `server` 块用于配置一个虚拟主机。 在 `server` 块中,可以使用 `location` 指令来配置代理。例如,如果你想将所有请求代理到另一个服务器上,可以使用以下配置: ``` server { listen 80; location / { proxy_pass http://other_server; } } ``` 这样,所有请求都会被代理到 http://other_server。 你还可以通过使用正则表达式来限制代理的路径,或者通过使用 `proxy_redirect` 指令来修改响应头中的 `Location` 字段。 ### 回答2: Nginx是一个高性能的HTTP和反向代理服务器,可以通过代理配置文件来进行配置代理配置文件通常是指Nginx的主配置文件nginx.conf中的部分或全部内容,用于定义Nginx代理行为。 在代理配置文件中,可以通过以下几个关键字来配置Nginx代理功能: 1. server:用于定义一个虚拟服务器,可以配置服务器的监听地址和端口号。一个Nginx可以定义多个虚拟服务器来监听不同的地址和端口。 2. location:用于定义请求的匹配规则和代理行为。可以指定要代理的目标地址、代理方式(例如反向代理或正向代理)、代理请求头等。 3. proxy_pass:用于指定要代理的目标地址,可以是一个具体的URL或者一个包含变量的表达式。 4. proxy_set_header:用于设置代理请求头的值,可以设置HTTP头字段、代理连接方式等。 5. proxy_buffering:用于设置是否开启代理缓存,可以提高反向代理的性能。 除了上述关键字,代理配置文件还可以使用一些Nginx提供的变量来进行配置,例如$remote_addr表示客户端的IP地址,$uri表示请求的路径等。 通过配置代理配置文件,可以实现Nginx代理功能,将客户端的请求转发到其他服务器上进行处理。代理配置文件的灵活性和强大功能使得Nginx在实际应用中被广泛使用,可以通过配置文件来满足各种不同的代理需求。 ### 回答3: nginx代理配置文件是指用于配置nginx反向代理服务器的文件。通过这个配置文件,可以指定nginx代理服务器接收的请求,并将其转发到后端服务器上。 在nginx配置文件中,每个代理服务器配置由一个或多个location块组成。每个location块指定了一个URL路径和相应的配置。 在每个location块中,可以通过proxy_pass指令指定要转发到的后端服务器的地址。例如,proxy_pass http://backend_server; 将请求转发到名为backend_server的后端服务器。 除了proxy_pass,还可以配置其他代理相关的指令,如proxy_set_header设置要传递到后端服务器的头部信息,proxy_redirect用于重定向响应等。 在配置文件中,可以设置多个代理服务器,每个代理服务器对应一个或多个location块。这样可以根据需要进行灵活的转发配置。 此外,还可以在配置文件中设置ssl相关的指令,用于配置 HTTPS 的代理配置ssl证书和私钥的路径,以及其他与HTTPS相关的参数。 完成配置文件后,需要重新加载nginx配置,并启动nginx服务器。 可以使用nginx -t命令验证配置文件语法是否正确,然后使用nginx -s reload命令重新加载配置文件。 通过以上的配置nginx代理服务器可以根据配置文件中的规则,将接收到的请求转发到指定的后端服务器上,实现了代理功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值