当前位置: 首页 > 技术支持 > 服务器维护>> nginx主机代理,nginx服务代理配置

nginx主机代理,nginx服务代理配置

nginx主机代理,nginx服务代理配置

目录:

  • 1、Nginx代理的概念
  • 2、Nginx代理功能详解
  • 3、nginx如何配置代理
  • 4、如何运用Nginx搭建代理主机?

Nginx代理的概念

Nginx是一款自由的、开源的、高性能的HTTP主机和反向代理主机;同时也是一个IMAP、POP3、SMTP代理主机;nginx可以作为一个HTTP主机进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。

nginx的代理分为正向代理和反向代理,下面来简单介绍下这2中代理,后续的文章会讲解反向代理和负载均衡的使用

1.什么是代理

所谓的代理就是一个代表、渠道。代理又涉及到2个角色 被代理角色 和 目标角色 。比如用户去耐克专卖店买鞋,那么专卖店就是 代理 , 被代理角色 是耐克厂家, 目标角色 就是用户

2.正向代理

假设我现在需要去访问facebook,但是由于墙的问题我无法访问。此时大家可能都会用一个操作FQ(番羽 土啬)进行访问,FQ的方式主要是找到一个可以访问国外网站的代理主机,我们将请求发送给代理主机,代理主机去访问国外的网站,然后将访问到的数据传递给我们!

上述这样的代理模式称为正向代理,正向代理最大的特点是 客户端非常明确要访问的主机地址 ;主机只清楚请求来自哪个代理主机,而不清楚来自哪个具体的客户端;正向代理模式 屏蔽或者隐藏了真实客户端信息 。

3.反向代理

明白了什么是正向代理,我们继续看关于反向代理的处理方式,举例如我大天朝的某宝网站,每天同时连接到网站的访问人数已经爆表,单个主机远远不能满足人民日益增长的购买欲望了,此时就出现了一个大家耳熟能详的名词:分布式部署;也就是通过部署多台主机来解决访问人数限制的问题;某宝网站中大部分功能也是直接使用nginx进行反向代理实现的

那么反向代理具体是通过什么样的方式实现的分布式的集群操作呢,我们先看一个示意图:

通过上述的图解大家就可以看清楚了,多个客户端给主机发送的请求,nginx主机接收到之后,按照一定的规则分发给了后端的业务处理主机进行处理了。此时请求的来源也就是 客户端是明确 的,但是请求具体由哪台主机处理的并不明确了,nginx扮演的就是一个反向代理角色

反向代理,主要用于主机集群分布式部署的情况下,反向代理 隐藏了主机 的信息!

Nginx代理功能详解

Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细。

Nginx代理服务的配置说明

1、上一篇中我们在http模块中有下面的配置,当代理遇到状态码为404时,我们把404页面导向百度。

然而这个配置,细心的朋友可以发现他并没有起作用。

如果我们想让他起作用,我们必须配合着下面的配置一起使用

2、如果我们的代理只允许接受get,post请求方法的一种

3、设置支持的http协议版本

4、如果你的nginx主机给2台web主机做代理,负载均衡算法采用轮询,那么当你的一台机器web程序iis关闭,也就是说web不能访问,那么nginx主机分发请求还是会给这台不能访问的web主机,如果这里的响应连接时间过长,就会导致客户端的页面一直在等待响应,对用户来说体验就打打折扣,这里我们怎么避免这样的情况发生呢。这里我配张图来说明下问题。

如果负载均衡中其中web2发生这样的情况,nginx首先会去web1请求,但是nginx在配置不当的情况下会继续分发请求道web2,然后等待web2响应,直到我们的响应时间超时,才会把请求重新分发给web1,这里的响应时间如果过长,用户等待的时间就会越长。

5、如果使用upstream指令配置啦一组主机作为被代理主机,主机中的访问算法遵循配置的负载均衡规则,同时可以使用该指令配置在发生哪些异常情况时,将请求顺次交由下一组主机处理。

6、如果你想通过http获取客户的真是ip而不是获取代理主机的ip地址,那么要做如下的设置。

关于X-Forwarded-For与X-Real-IP的一些相关文章我推荐一位博友的: HTTP 请求头中的 X-Forwarded-For ,这位博友对http协议有一系列的文章阐述,推荐大家去关注下。

7、下面是我的一个关于代理配置的配置文件部分,仅供参考。

上一篇中我说啦nginx有哪些中负载均衡算法。这一结我就给如果操作配置的给大家做详细说明下。

首先给大家说下upstream这个配置的,这个配置是写一组被代理的主机地址,然后配置负载均衡的算法。这里的被代理主机地址有2中写法。

然后,就来点实战的东西。

1、热备:如果你有2台主机,当一台主机发生事故时,才启用第二台主机给提供服务。主机处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB.....

upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333 backup; #热备 }

2、轮询:nginx默认就是轮询其权重都默认为1,主机处理请求的顺序:ABABABABAB....

upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333; }

3、加权轮询:跟据配置的权重的大小而分发给不同主机不同数量的请求。如果不设置,则默认为1。下面主机的请求顺序为:ABBABBABBABBABB....

upstream mysvr { server 127.0.0.1:7878 weight=1; server 192.168.10.121:3333 weight=2;}

4、ip_hash:nginx会让相同的客户端ip请求相同的主机。

upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333; ip_hash; }

5、如果你对上面4种均衡算法不是很理解,那么麻烦您去看下我上一篇配的图片,可能会更加容易理解点。

到这里你是不是感觉nginx的负载均衡配置特别简单与强大,那么还没完,咱们继续哈,这里扯下蛋。

关于nginx负载均衡配置的几个状态参数讲解。

down,表示当前的server暂时不参与负载均衡。

backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻 。

max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。

fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

到这里应该可以说nginx的内置负载均衡算法已经没有货啦。如果你像跟多更深入的了解nginx的负载均衡算法,nginx官方提供一些插件大家可以了解下。

nginx如何配置代理

nginx源码:

nginx官网:

... #全局块

events { #events块

...

}

http #http块

{

}

1、全局块:全局模块影响nginx的全局指令,一般有运行nginx主机的用户,nginx进程pid存放路劲,日志存放路径,配置文件引入,允许生成worker,process数。

2、events块:配置影响nginx主机或与用户的网络连接, ,有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个连接,开启多个网络连接序列化。

3、http块:可以嵌套多个server,配置代理,缓存

4、server块:配置虚拟主机参数,一个http中有多个server

5、location块:配置请求的路由。

########### 每个指令必须有分号结束。#################

error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:

debug|info|notice|warn|error|crit|alert|emerg

events {

} http {

}

四、nginx的简单命令

五、配置解析

server {

1、location 支持配置项目的绝对路径

2、假设我们的后台API地址是以API开头,location ^~ /user/ 代表nginx将会拦截请求地址中包含"/user/"字样的请求,其实这就是我们的ajax请求路径,拦截到请求之后根据写法会分成两种情况把这个请求转发到 下面 proxy_pass 的地址上。

举个例子:

a、如上图,如果proxy_pass 的URL以 / 结尾 ,那么请求转发的时候 将 不会 带上 匹配到的 /api/ ,也就是说如果 登录请求 URL是 localhost:80/user/login,proxy_pass URL 是 , Nginx将会 把这个请求转发成

b、如果proxy_pass 的URL不以 / 结尾 ,那么请求转发的时候 将 会带上 匹配到的 /user/ ,也就是说如果 登录请求 URL是 localhost:60001/user/login,proxy_pass URL 是 , Nginx将会 把这个请求转发成

3、一般我们登录之后主机会通过Set-Cookie把token写回到我们本地,如果不设置 proxy_cookie_path 的话,主机Set-Cookie命令会失效,本地存不了cookie,从而导致token丢失。

这里proxy_cookie_path有一点需要注意的是 如果 proxy_pass URL 是 这种情况 proxy_cookie_path应该设置成 /platform/ / (注意两个斜杠之间有空格)。

如果 proxy_pass URL 是 这种情况 proxy_cookie_path应该设置成 / / (注意两个斜杠之间有空格)

语法规则:location [=| | *|^~] /uri/ { … }

如何运用Nginx搭建代理主机?

如何实现Nginx的反向代理?

这句话什么意思?

意思是说当客户机来访问主机的时候,主机本身并不出面接待,而是将客户的请求转高给手下的子主机(小弟)负责接待。

比如:你访问,其实并不时百度总主机接待的你,而是百度的代理主机接待的你,不过他们的服务是一样的,提供同样的页面;

如是搭建Nginx服务才能实现这样的效果呢?

搭建一个最简单,最基础nginx代理主机,需要一台代理服务,两台子主机,XX台客户机来作验证;

操作流程如下:

第一步、主机和客户机配好IP地址,其中Nginx代理主机需要配置两张网卡,两个IP地址,一个和客户机通信,一个和子主机通信;

代理主机与客户机和子主机都分别配置同网段IP地址;

例如:

代理主机:192.168.4.5    192.168.2.5

子主机         :192.168.2.100    192.168.2.200

客户机    :192.168.4.10

这样配置的好处是: 可以负载均衡,保障用户的访问体验,保障上网速度,同时也保障了,即便有一台主机坏掉了,另一台服务可以接待用户访问;

第二步、代理主机上安装Nginx服务软件,两台子主机上安装HTTPD服务并写入相应的网页,然后启动服务;

yum  -y install  httpd        ##安装httpd服务;

echo  "罗贵"      /var/www/html/index.html       ##写一个简单的网页

./configure    --user=nginx    --group=nginx   --with-http_ssl_module

make     make   install     ##编译安装Nginx

第三步、修改Nginx的配置文件;

vim   /usr /local /nginx /conf /nginx.conf

http   {  ...............    ##在文件中找到http开头的行,并在http下面随意找两行添加下面两行的内容;

            upstream    luogui    {        ##luogui是集群名字,可以自由定义,upstream 上游的意思;翻译过来就是在上游建立一个名字为luogui的集群,集群中包含下述IP地址;

                      server   192.168.2.100:80;

                      server    192.168.2.200:80;

}

server    {

        listen        80;

        server_name   ;     ##域名,可以自由定义;

location   ^/.php$  {    ##匹配网页地址的意思,匹配以 / 开头.php结尾的网页文件;

        proxy_pass  ;        ##通过proxy代理主机将用户的请求转发给luogui集群主机;(注:优先级最高,系统会优先处理这条命令)

             }

                             }

第四步、测试效果;

firefox    或者  本地测试   curl  http://192.168.4.5 

结果应该是暂停任何一台子主机,客户机访问网页都没有问题;

以上.......

                                                    (EDN)

祝:开心!

罗贵

2019-04-05于深圳

【nginx主机代理】的内容来源于互联网,若引用不当,请发邮件456(@)456.cn联系删除


服务器购买/咨询热线:1563700917115617636856

本文链接:http://43.134.181.216/jishuzhichiyuweihu/12974.html
tags:服务器虚拟主机VPS主机IP地址域名IP网站HTTPHTTPSWeb负载均衡HTMLSSLHTTP协议nginxPHPPOPIMAPSMTP
腾讯云服务器特惠

  • 关注微信
是否收录:

猜你喜欢

微信公众号