首先,我们在上面提到过,设置Nginx服务器的代理服务器,一般是配置到一个server块中,注意,在该server块中,不要出现 server_name指令,即不要设置虚拟主机的名称或IP。而resolver指令是必需的,如果没有该指令,Nginx服务器无法处理接收到的域名。
其次,Nginx服务器的代理服务器不支持正向代理HTTPS站点。
Nginx的反向代理服务Nginx服务器的反向代理服务是其最常用的重要功能之一,在实际工作中应用广泛,涉及的配置指令也比较多,各类指令完成的功能也不尽相同。下面按照功能分类向大家介绍配置该服务需要掌握的指令。由反向代理服务又可以衍生出多种与此相关的Nginx服务器的重要功能,随后将逐步梳理这些功能,并提供配置实例供大家参考。
Nginx服务器提供的反向代理服务也是比较高效的。它能够同时接收的客户端连接由worker_processes指令和worker_connections指令决定,计算方法为:worker_processes * worker_connections / 4.
配置Nginx服务器反向代理用到的指令如果没有特别说明,原则上可以出现在Nginx配置文件的http块、server块或者location块中,但同正向代理服务的设置一样,一般是在搭建的Nginx服务器中单独配置一个server块来设置反射代理服务。这些指令主要由ngx_http_proxy_module模块进行解析和处理。该模块是Nginx服务器的标准HTTP模块。
反向代理的基本设置的27个指令学习Nginx服务器的反向代理 服务,要涉及与后端代理服务器相关的配置,是客户端提供正常Web服务的基础,大家应该熟练掌握,尤其是proxy_pass指令,在实际应用过程中需要注意一些配置细节,需要小心使用。
1.proxy_pass指令该指令用来设置被代理服务器的地址,可以是主机名称、IP地址加端口号等形式。其语法结构为:
proxy_pass URL;
其中,URL为要设置的被代理服务器的地址,包含传输协议、主机名称或IP地址加商品号、URI等要素。传输协议通常是“http”或者“https”。指令同时还接受以“unix”开始的UNIX-domain套接字路径。例如:
proxy_pass http://www.myweb.name/uri;
proxy_pass http://localhost/uri;
proxy_pass http://unix:/tmp/backend.socket:/uri/;
如果被代理服务器是一组服务器的话,可以使用upstream指令配置后端服务器组。例如:
#多个服务器
...
upstream proxy_svrs #配置后端服务器
{
server http://192.168.1.1:8001/uri/;
server http://192.168.1.2:8001/uri/;
server http://192.168.1.3:8001/uri/;
}
server
{
...
listen 80;
server_name ;
location /
{
proxy_pass proxy_svrs; #使用服务器组名称
}
}
这里首先需要提醒大家proxy_pass指令在使用服务器组名称时应该注意一个细节。在上例中,在组内的各个服务器中都指明了传输协议“”,而在proxy_pass指令中就不需要指明了。如果 现在将upstream指令的配置改为:
#不指明http
...
upstream proxy_svrs #配置后端服务器
{
server 192.168.1.1:8001/uri/;
server 192.168.1.2:8001/uri/;
server 192.168.1.3:8001/uri/;
}
我们就需要在proxy_pass指令中指明传输协议“”;
proxy_pass http://proxy_svrs;
在使用该指令的过程中还需要注意,URL中是否包含有URI,Nginx服务器的处理方式是不同的。如果URL中不包含URI,Nginx服务器不会改变原地址的URI;但是如果包含了URI,Nginx服务器将会使用新的URI替代原来的URI。我们举例来说明。
请看下面的Nginx配置片段:
..
server
{
...
server_name ;
resolver 8.8.8.8;
listen 82;
location /server/
{
...
proxy_pass http://192.168.1.1;
}
}
如果客户端使用“ ”发起请求,该请求被配置中显示的location块进行处理,由于proxy_pass指令变量不含有URI,所以转向的地址为“ ”;我们再来看下面的Nginx片段:
..
server
{
...
server_name ;
resolver 8.8.8.8;
listen 82;
location /server/
{
...
proxy_pass http://192.168.1.1/loc;
}
}