如何运用Nginx搭建代理服务器?

如何运用Nginx搭建代理服务器?,第1张

如何实现Nginx的反向代理?

这句话什么意思?

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

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

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

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

操作流程如下:

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

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

例如:

代理服务器:19216845    19216825

子服务器         :1921682100    1921682200

客户机    :192168410

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

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

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

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

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

make   &&   make   install     ##编译安装Nginx

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

vim   /usr /local /nginx /conf /nginxconf

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

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

                      server   1921682100:80;

                      server    1921682200:80;

}

server    {

        listen        80;

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

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

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

             }

                             }

第四步、测试效果;

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

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

以上

                                                    (EDN)

祝:开心!

罗贵

2019-04-05于深圳

nginx代理常用配置项

通过以下的案例来理解proxy_set_header设置

其中backend 1921684122 提前安装nginx 第三方模块支持 ""echo"

=============1921684119 proxy1 nginxconf

=============1921684120 proxy2 nginxconf

=============1921684121 proxy3 nginxconf

=============1921684122 backend nginxconf

=============

有注意到 ||1921684254, 1921684120 是不包含1921684119

proxy_set_header Host $host;

本案例因为不涉及到域名所以用不到$Host值,作用也比较好理解,就是nginx做代理时,把原http请求的Header中的Host字段也放到转发的请求里,如果不加这一行的话,nginx转发的请求header里就不会有Host字段,而服务器是靠这个Host值来区分你的请求的是哪个域名的资源的,

proxy_set_header X-Real-IP $remote_addr;

只能获取到与服务器本身直连的上层请求ip 写入到http请求头中

proxy_set_header X-Real-IP $proxy_add_x_forwarded_for;

定义客户端IP,如果多层代理都有配置这个值,离backent最近的会覆盖之前的值 所以一般只在连接客户端的代理上写添加这条值,这样backend就能获取到客户端的真实IP,单独使用无效

proxy_set_header X-Forwarded-For $http_x_forwarded_for;

把客户端IP写入到http请求头中,前提是之前有X-Real-IP $remote_addr定义过客户端IP,所以单独使用无效

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

相当于 $http_x_forwarded_for 和 $remote_addr和结合 获取上层IP和把客户端IP写入请求头中,

代理类型

代理IP根据匿名性来划分一共能分为三种:透明代理、普通匿名代理、高匿代理。从安全程度来说,这三种代理类型的排序是高匿>普通匿名>透明。

代理原理

代理类型主要取决于代理服务器端的配置。不同配置会形成不同的代理类型。在配置中,这三个变量REMOTE_ADDR,HTTP_VIA,HTTP_X_FORWARDED_FOR是决定性因素:

1 REMOTE_ADDR

REMOTE_ADDR 表示客户端的 IP,但是它的值不是由客户端提供的,而是服务器根据客户端的IP指定的。

如果使用浏览器直接访问某个网站,那么网站的web服务器(Nginx、Apache等)就会把REMOTE_ADDR设为客户端的 IP 地址。

如果用户给浏览器设置代理,用户访问目标网站的请求会先经过代理服务器,然后由代理服务器将请求转化到目标网站。那么网站的web服务器就会把 REMOTE_ADDR 设为代理服务器的 IP。

2X-Forwarded-For(XFF)

X-Forwarded-For是一个HTTP扩展标头,用来表示HTTP请求端真实IP。当客户端使用了代理时,web服务器就无法获知客户端的真实IP地址。为了避免这个情况,代理服务器通常会增加一个X-Forwarded-For的标头信息,把客户端的IP添加到标头信息里面。

3HTTP_VIA

via是HTTP协议里面的一个header,记录了一次HTTP请求所经过的代理和网关,经过1个代理服务器,就添加一个代理服务器的信息,经过2个就添加2个。

代理类型区别

1透明代理(Transparent Proxy)

透明代理虽然可以直接“隐藏”客户端的 IP 地址,但是还是可以从来源查到客户端的 IP地址。

2普通匿名代理(Anonymous Proxy)

普通匿名代理能提供隐藏客户端IP地址的功能,但当用户使用普通匿名代理时,服务器就能知道客户端使用代理的行为。

3高匿代理(Elite Proxy或High Anonymity Proxy)

高匿代理既能让服务器不清楚客户端是否在使用代理,也能保证服务器获取不到客户端的真实IP地址。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何运用Nginx搭建代理服务器?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情