nginx反向代理配置

doMore 887 2019-11-06

反向代理是一个Web服务器,它接受客户端的连接请求,然后将请求转发给上游服务器,并将从服务器得到的结果返回给连接的客户端。下面简单的反向代理的例子:

server {  
  listen       80;                                                        
  server_name  localhost;                                              
  client_max_body_size 1024M;  # 允许客户端请求的最大单文件字节数

  location / {
    proxy_pass                         http://localhost:8080;
    proxy_set_header Host              $host:$server_port;
    proxy_set_header X-Forwarded-For   $remote_addr; # HTTP的请求端真实的IP
    proxy_set_header X-Forwarded-Proto $scheme;      # 为了正确地识别实际用户发出的协议是 http 还是 https
  }
}

复杂的配置

server {
    #侦听的80端口
    listen       80;
    server_name  git.example.cn;
    location / {
        proxy_pass   http://localhost:3000;
        #以下是一些反向代理的配置可删除
        proxy_redirect             off;
        #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
        proxy_set_header           Host $host;
        client_max_body_size       10m; #允许客户端请求的最大单文件字节数
        client_body_buffer_size    128k; #缓冲区代理缓冲用户端请求的最大字节数
        proxy_connect_timeout      300; #nginx跟后端服务器连接超时时间(代理连接超时)
        proxy_send_timeout         300; #后端服务器数据回传时间(代理发送超时)
        proxy_read_timeout         300; #连接成功后,后端服务器响应时间(代理接收超时)
        proxy_buffer_size          4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
        proxy_buffers              4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
        proxy_busy_buffers_size    64k; #高负荷下缓冲大小(proxy_buffers*2)
    }
}

代理到上游服务器的配置中,最重要的是proxy_pass指令。以下是代理模块中的一些常用指令:

指令说明
proxy_connect_timeoutNginx从接受请求至连接到上游服务器的最长等待时间
proxy_send_timeout后端服务器数据回传时间(代理发送超时)
proxy_read_timeout连接成功后,后端服务器响应时间(代理接收超时)
proxy_cookie_domain替代从上游服务器来的Set-Cookie头的domain属性
proxy_cookie_path替代从上游服务器来的Set-Cookie头的path属性
proxy_buffer_size设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffersproxy_buffers缓冲区,网页平均在多少k以下
proxy_set_header重写发送到上游服务器头的内容,也可以通过将某个头部的值设置为空字符串,而不发送某个头部的方法实现
proxy_ignore_headers这个指令禁止处理来自代理服务器的应答。
proxy_intercept_errors使nginx阻止HTTP应答代码为400或者更高的应答。