Nginx反向代理

                                            Nginx反向代理

反向代理(reverse proxy):指的是代理外网用户的请求到内部的指定web服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式。

常用指令说明示例
proxy_pass用来设置将请求转发给的后端服务器的主机,可以是主机名、IP地址:端口的方式,也可以代理到通过upstream设置的主机组;如示例一
proxy_hide_header

Nginx会将上游服务器的响应转发给客户端,但默认不会转发以下HTTP头部字段:Date、Server、X-Pad和X-Accel-*。使用proxy_hide_header后可以任意地指定哪些HTTP头部字段不能被转发。

注:如果是nginx直接作为web服务器,要隐藏版本信息的话,使用fastcgi_hide_header:

proxy_hide_header Cache-Control;  
proxy_hide_header MicrosoftOfficeWebServer; 
proxy_pass_header将原来禁止转发的header设置为允许转发。
proxy_pass_header X-Accel-Redirect;
proxy_pass_request_body是否向后端服务器发送HTTP包体部分,可以设置在http/server或location块。
proxy_pass_request_body on|off;  #默认为on
proxy_pass_request_headers是否将客户端的请求头部转发给后端服务器,可以设置在http/server或location块。
proxy_pass_request_headers on | off; #默认为on
proxy_set_header可以更改或添加客户端的请求头部信息内容,并转发之后端服务器,比如在后端服务器想要获取客户端的真实IP的时候,就要更改每一个报文的头部。
proxy_set_header HOST  $remote_addr; #添加HOST到报文头部,其值为客户端的公网IP地址
proxy_set_body更改nginx服务器接收到的客户端请求的请求内容,然后将修改后的请求转发给后端的服务器。
proxy_set_body value;  #其中value为要修改的目标内容,可以是变量、文本或者变量的组合。
proxy_ipNginx 0.8.22版本及以上支持此功能,用于Nginx配置了多个基于域名或IP的主机的情况下,可以指定代理连接到特定的主机处理,就是强制将客户端请求绑定到指定的IP地址。
proxy_bind x.x.x.x; 
proxy_connect_timeout配置nginx服务器与后端服务器尝试建立连接的超时时间,默认为60秒。
proxy_connect_timeout 10s; #10s为自定义nginx与后端服务器建立连接的超时时间
proxy_read_time配置nginx服务器向后端服务器或服务器组发起read请求后,等待的超时时间。
proxy_read_time 10s; #默认为60秒
proxy_send_time配置nginx向后端服务器或服务器组发起write请求后,等待的超时时间。
proxy_send_time 10s; #默认为60s
proxy_http_version用于设置nginx提供代理服务的HTTP协议的版本。
proxy_http_version 1.0|1.1;
proxy_method设置nginx服务器请求后端服务器时使用的方法,一般为POST或者GET,客户端的请求方法将被忽略。
proxy_method GET|PUT;
proxy_ignore_client_abort设置在客户端网络中断请求时,nginx服务器是否中断对被代理服务器的请求。
proxy_ignore_client_abort off|on; #默认为off,当客户端网络中断请求时,nginx服务器中断其对后端服务器的请求。
proxy_ignore_headers设置nginx不处理后端服务器返回的数据中包含某些指定字段的报文,可以指定的有:”X-Accel-Redirect”, “X-Accel-Expires”, “Expires”或”Cache-Control”;
proxy_ignore_headers Expires;
proxy_redirect修改后端服务器返回的响应头部中的location或refresh,与proxy_pass配合使用。 
proxy_intercept_errors设置nginx服务器返回客户端的错误状态,当后端服务器返回大于等于400的错误码的是,如果本功能是打开的,则nginx服务器返回自定义的错误页面(使用error page定义的),如果没有开启就将后端服务器返回的HTTP状态直接返回给客户端,默认为关闭;
proxy_intercept_errors on | off;
proxy_headers_hash_max_size设置nginx保存HTTP报文头的hash表的上限,默认为512字节;
proxy_headers_hash_bucket_size 512;#申请nginx保存HTTP报文头的hash表的空间大小,默认为64个字节
proxy_headers_hash_max_size 512; #上限
server_names_hash_max_szie   512; #设置服务器名称的上限
server_namse_hash_bucket_size 512; #申请空间大小
proxy_headers_hash_bucket_size申请nginx保存HTTP报文头的hash表的空间大小,默认为64个字节。
proxy_headers_hash_bucket_size 512; #默认为64字节
proxy_net_upstream当使用了upstream的时候,可以定义在发生了特定的情况下将请求依次交给下一个组内的服务器处理,状态包括:示例二
proxy_ssl_session_reuse配置是否基于SSL协议与后端服务器建立连接;
proxy_ssl_session_reuse on | off;

示例一:

upstream webserver {
        #ip_hash;  
        server  192.168.0.201 weight=1 max_fails=2  fail_timeout=2;
        server  192.168.0.202 weight=1 max_fails=2  fail_timeout=2;
        server 127.0.0.1:9008 backup;
}

server {
        server_name  hfnginx.chinacloudapp.cn;
        #access_log  logs/host.access.log  main;
        location / {  #静态网页在本机
            root   html;
            index  index.html;
        }
        location ~* ^/form {  #指定目录在后端服务器
            proxy_pass  http://webserver; #此处http://webserver后面不能加/,如果加了会提示语法错误
            proxy_set_header X-Real-IP $remote_addr;
        }
}

示例二:

proxy_next_upstream  http_404 http_502;  //让404报错进入max_fails计数 
        upstream online { 
        sticky; 
        server 172.28.70.161:8080 max_fails=0 fail_timeout=3s ; 
        server 172.28.70.163:8080  max_fails=0 fail_timeout=3s ; 
     
        check interval=3000 rise=2 fall=1 timeout=1000 type=http; 
        check_http_send "GET / HTTP/1.0\r\n\r\n"; 
        check_http_expect_alive http_2xx http_3xx; 
        } 
 
        upstream backup { 
        server 172.28.22.29:7777  max_fails=0 fail_timeout=3s; 
        }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx 反向代理是一种常用的服务器配置方法,它可以将客户端的请求转到后端的多个服务器上,并将响应返回给客户端。通过反向代理,可以实现负载均衡、缓存、安全性等功能。 要配置 Nginx 反向代理,你需要编辑 Nginx 的配置文件(通常是 `nginx.conf`),然后添加相应的配置项。 以下是一个简单的 Nginx 反向代理配置示例: ``` http { upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } ``` 在这个示例中,`upstream` 块定义了后端服务器的列表。`server` 块定义了监听的端口和域名,并在 `location` 块中配置了反向代理。 `proxy_pass` 指令将请求转发到 `http://backend`,其中 `backend` 是 `upstream` 块中定义的后端服务器列表。 `proxy_set_header` 指令用于设置转发请求时的请求头。在示例中,我们设置了 `Host` 和 `X-Real-IP` 请求头。 完成配置后,保存文件并重新加载 Nginx 配置。这样,Nginx 就会将客户端的请求转发到后端服务器,并将响应返回给客户端。 请注意,以上只是一个简单的示例,实际的配置可能因具体需求而有所不同。你可以根据实际情况进行配置,并参考 Nginx 官方文档获取更多信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值