Nginx入门与基础之反向代理配置介绍

众所周知,nginx是一个很优秀的反向代理服务器,它反向代理的性能堪比haproxy,在很多应用场景中,nginx常常单独作为反向代理server+keepalived的配合构建高性能,高可用集群,下面我们讲讲nginx配置反向代理时一些常用配置参数说明,如下:

一. nginx反向代理配置项说明

1.1 proxy_pass

语法:proxy_pass URL;

配置块:location、if

此配置项将当前请求反向代理到URL参数指定的服务器上,URL可以是主机名或IP地址加端口的形式,例如:

proxy_pass http://localhost:8000/uri/; 

也可以是UNIX句柄:

proxy_pass http://unix:/path/to/backend.socket:/uri/;

还可以如上节负载均衡中所示,直接使用upstream块,例如:

upstream backend {  
  …  
}  
 
server {  
  location / {  
    proxy_pass  http://backend;  
  }  
}

用户可以把HTTP转换成更安全的HTTPS,例如:

 proxy_pass https://192.168.0.1; 

默认情况下反向代理是不会转发请求中的Host头部的。如果需要转发,那么必须加上配置:

proxy_set_header Host $host; 

1.2 proxy_method

语法:proxy_method method;

配置块:http、server、location

此配置项表示转发时的协议方法名。例如设置为

proxy_method POST;

那么客户端发来的GET请求在转发时方法名也会改为POST。

1.3 proxy_hide_header

语法:proxy_hide_header the_header;

配置块:http、server、location

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

proxy_hide_header Cache-Control;  proxy_hide_header MicrosoftOfficeWebServer;

1.4 proxy_pass_header

语法:proxy_pass_header the_header;

配置块:http、server、location

与proxy_hide_header功能相反,proxy_pass_header会将原来禁止转发的header设置为允许转发。例如:

proxy_pass_header X-Accel-Redirect;

1.5 proxy_pass_request_body

语法:proxy_pass_request_body on | off;

默认:proxy_pass_request_body on;

配置块:http、server、location

作用为确定是否向上游服务器发送HTTP包体部分。

1.6 proxy_pass_request_headers

语法:proxy_pass_request_headers on | off;

默认:proxy_pass_request_headers on;

配置块:http、server、location

作用为确定是否转发HTTP头部。

1.7 proxy_redirect

语法:proxy_redirect [ default|off|redirect replacement ];

默认:proxy_redirect default;

配置块:http、server、location

当上游服务器返回的响应是重定向或刷新请求(如HTTP响应码是301或者302)时,proxy_redirect可以重设HTTP头部的location或refresh字段。

例如,如果上游服务器发出的响应是302重定向请求,location字段的URL是:http://localhost:8000/two/some/uri/,那么在下面的配置情况下,实际转发给客户端的location是http://frontend/one/some/uri/。

proxy_redirect http://localhost:8000/two/ http://frontend/one/; 

这里还可以使用ngx-http-core-module提供的变量来设置新的location字段。例如

proxy_redirect   http://localhost:8000/    http://$host:$server_port/;  

也可以省略replacement参数中的主机名部分,这时会用虚拟主机名称来填充。例如:

proxy_redirect http://localhost:8000/two/ /one/;

使用off参数时,将使location或者refresh字段维持不变。例如:

proxy_redirect off;

使用默认的default参数时,会按照proxy_pass配置项和所属的location配置项重组发往客户端的location头部。例如,下面两种配置效果是一样的:

location /one/ {    proxy_pass       http://upstream:port/two/;    proxy_redirect   default;  }     location /one/ {   proxy_pass       http://upstream:port/two/;   proxy_redirect   http://upstream:port/two/   /one/;  }

1.8 proxy_next_upstream

语法:proxy_next_upstream [error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_404 | off ];

默认:proxy_next_upstream error timeout;

配置块:http、server、location

此配置项表示当向一台上游服务器转发请求出现错误时,继续换一台上游服务器处理这个请求。前面已经说过,上游服务器一旦开始发送应答,Nginx反向代理服务器会立刻把应答包转发给客户端。因此,一旦Nginx开始向客户端发送响应包,之后的过程中若出现错误也是不允许换下一台上游服务器继续处理的。这很好理解,这样才可以更好地保证客户端只收到来自一个上游服务器的应答。proxy_next_upstream的参数用来说明在哪些情况下会继续选择下一台上游服务器转发请求。

error:当向上游服务器发起连接、发送请求、读取响应时出错。

timeout:发送请求或读取响应时发生超时。

invalid_header:上游服务器发送的响应是不合法的。

http_500:上游服务器返回的HTTP响应码是500。

http_502:上游服务器返回的HTTP响应码是502。

http_503:上游服务器返回的HTTP响应码是503。

http_504:上游服务器返回的HTTP响应码是504。

http_404:上游服务器返回的HTTP响应码是404。

off:关闭proxy_next_upstream功能—出错就选择另一台上游服务器再次转发。

Nginx的反向代理模块还提供了很多种配置,如设置连接的超时时间、临时文件如何存储,以及最重要的如何缓存上游服务器响应等功能。这些配置可以通过阅读ngx_http_proxy_module模块的说明了解,只有深入地理解,才能实现一个高性能的反向代理服务器。

上面所讲的就是nginx反向代理的一些基本配置参数说明,如想要仔细了解关于nginx的反向代理相关设置请访问http://nginx.org/en/docs/http/ngx_http_proxy_module.html

时间: 2024-10-19 22:34:44

Nginx入门与基础之反向代理配置介绍的相关文章

nginx实战(四)反向代理配置缓存及负载均衡

前言 反向代理,是指用户通过同一服务器访问服务器后端各被代理服务器的访问方式.(详见百度百科 https://baike.baidu.com/item/反向代理/7793488 )? nginx 反向代理的应用场景 1.实现外网用户对内网服务器的访问,相对保护内网服务器安全及节约网络资源2.增加缓存,缓解对内网服务器访问的压力3.通过负载均衡提高业务处理能力及高可用性? 访问内网配置 ### 代理参数,设置头信息 cat>conf/conf.d/proxy.conf<<EOF proxy

Nginx HTTP负载均衡和反向代理配置

当前大并发的网站基本都采用了Nginx来做代理服务器,并且做缓存,来扛住大并发.先前也用nginx配置过简单的代理,今天有时间把整合过程拿出来和大家分享,不过其中大部分也是网上找来的资源. nginx完整的反向代理代码如下所示  : [[email protected] conf]# vim nginx.conf user  www www; worker_processes  10; error_log  /var/log/nginx/nginx_error.log; pid        l

使用本脚本可以自动批量完成中间节点环境的部署工作,包括:Nginx编译安装、添加程序管理脚本、设置开机启动、反向代理配置、证书分发、添加iptables规则等

使用本脚本可以自动批量完成中间节点环境的部署工作,包括:Nginx编译安装.添加程序管理脚本.设置开机启动.反向代理配置.证书分发.添加iptables规则等.脚本支持自定义nginx安装版本.设置编译模块.配置监听端口等. 1. Nginx Role规则说明 本脚本用于中间节点(Nginx反向代理)环境的自动化配置,主要内容包括: 安装基础依赖环境: 创建nginx启动用户(支持自定义用户): 下载nginx安装文件(可自定义nginx版本): 解压安装文件: 执行编译安装(可自定义编译参数和

centos安装Nginx,反向代理配置全过程

1.安装依赖 #gcc安装,nginx源码编译需要 yum install gcc-c++ #PCRE pcre-devel 安装,nginx 的 http 模块使用 pcre 来解析正则表达式 yum install -y pcre pcre-devel #zlib安装,nginx 使用zlib对http包的内容进行gzip yum install -y zlib zlib-devel #OpenSSL 安装,强大的安全套接字层密码库,nginx 不仅支持 http 协议,还支持 https(

Nginx 反向代理配置

在实现一个搜索下拉框的效果,因为需要通过AJAX来请求自己的一个webservice,但是JS是不允许访问不同源的资源的,所以需要配置一个代理服务器来实现数据的返回,找了好多文章试过都不行,下面记录下这篇文章的内容已备以后查看 Nginx为Tomcat服务器作反向代理的配置教程 这篇文章主要介绍了Nginx为Tomcat服务器作反向代理的配置教程,文中以Windows系统为环境来演示驱动JSP程序的示例,需要的朋友可以参考下 web上的server都叫web server,但是大家分工也有不同的

Nginx安装和反向代理配置

Nginx安装和反向代理配置 Nginx安装需要一些准备工作. 安装gcc等 yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel 还需要安装pcre,PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 Perl兼容的正则表达式库. yum -y install pcre 下载Nginx源码包,这里选择是1.7.8版本.并且解压缩,并且编译 wge

nginx反向代理配置详解

反向代理配置 修改部署目录下conf子目录的nginx.conf文件(如/opt/nginx/conf/nginx.conf)内容,可调整相关配置. 将默认配置里面带#号注释内容去掉 grep -v "#" /opt/nginx/conf/nginx.conf > /opt/nginx/conf/nginx.confbak 将原先的配置修改名字备份一下,后面的没有注释内容的nginx.confbak修改名字为nginx.conf 反向代理配置示例: #定义Nginx运行的用户和用

高性能Web服务之Nginx+Tomcat实现负债均衡反向代理及动静分离

在实际生产中,Tomcat服务器一般不单独使用在项目中,对于静态资源的响应Nginx表现的比较好,另外由于nginx是专门用于反向代理的服务器,所以很容易实现将java的请求转发到后端交给tomcat容器处理,而本身用来处理静态资源. 通常tomcat前端是nginx或apache,后端都为tomcat,也就意味着无论前端是什么角色都是以代理的方式进行工作的;但是要注意的是如果基于nginx做反向代理,转发请求到tomcat的时候是基于http协议进行转发的:但注意的是tomcat的连接器有ht

反向代理配置

nginx server { listen 80; server_name localhost; root /apps/web/; index index.html; location / { } location /server { proxy_pass http://192.168.10.73:8080/manager-webapp/; proxy_cookie_path /manager-webapp/ /server/; } location /client { proxy_pass h