Nginx正反向代理及负载均衡等功能实现配置代码实例

这篇文章主要介绍了Nginx正反向代理及负载均衡等功能实现配置代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

系统环境:

VirtualBox Manager

Centos6.4

nginx1.10.0

IP对应的机器名:

IP 机器名 角色名

10.0.0.139 [elk] client

10.0.0.136 [lvs-master] nginx server

10.0.0.137 [kvm] web server 1

10.0.0.111 [lvs-backup] web server 2

一、正向代理

1.1 环境介绍

1.2 配置介绍

Nginx server:(内网地址:10.0.0.136,外网地址:172.16.27.64)

使用VirtualBox Manager虚拟出双网卡。

[root@lvs-master conf.d]# ifconfig
eth0   Link encap:Ethernet HWaddr 08:00:27:30:56:99
     inet addr:10.0.0.136 Bcast:10.255.255.255 Mask:255.0.0.0
     inet6 addr: fe80::a00:27ff:fe30:5699/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:891978 errors:0 dropped:0 overruns:0 frame:0
     TX packets:9509 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000
     RX bytes:81841095 (78.0 MiB) TX bytes:13339058 (12.7 MiB) 

eth1   Link encap:Ethernet HWaddr 08:00:27:55:4C:72
     inet addr:172.16.27.64 Bcast:172.16.27.255 Mask:255.255.255.0
     inet6 addr: fe80::a00:27ff:fe55:4c72/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:913671 errors:0 dropped:0 overruns:0 frame:0
     TX packets:22712 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000
     RX bytes:109369858 (104.3 MiB) TX bytes:1903855 (1.8 MiB) 

lo    Link encap:Local Loopback
     inet addr:127.0.0.1 Mask:255.0.0.0
     inet6 addr: ::1/128 Scope:Host
     UP LOOPBACK RUNNING MTU:16436 Metric:1
     RX packets:36222 errors:0 dropped:0 overruns:0 frame:0
     TX packets:36222 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0
     RX bytes:3899937 (3.7 MiB) TX bytes:3899937 (3.7 MiB) 
[root@lvs-master conf.d]# cat zxproxy.conf
server {
  listen    80;  #监听的端口
  server_name 10.0.0.136; #server的内容地址,与client需要网络互通 

  resolver 172.16.5.1;  #DNS,这个是DNS,访问外网
  location / {
      proxy_pass http://$http_host$request_uri;  #$http_host和$request_uri是nginx系统变量,不需要替换,保持原样
        } 

Nginx client:

只有一个内网网卡,通过访问Nginx server去访问internet,其实翻墙、肉鸡、之类的俗称就是这个原理。

[root@kvm ~]# ifconfig
eth0   Link encap:Ethernet HWaddr 08:00:27:72:8C:3B
     inet addr:10.0.0.137 Bcast:10.255.255.255 Mask:255.0.0.0
     inet6 addr: fe80::a00:27ff:fe72:8c3b/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:1462448 errors:0 dropped:0 overruns:0 frame:0
     TX packets:21130 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000
     RX bytes:145119904 (138.3 MiB) TX bytes:2814635 (2.6 MiB) 

lo    Link encap:Local Loopback
     inet addr:127.0.0.1 Mask:255.0.0.0
     inet6 addr: ::1/128 Scope:Host
     UP LOOPBACK RUNNING MTU:16436 Metric:1
     RX packets:60800 errors:0 dropped:0 overruns:0 frame:0
     TX packets:60800 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0
     RX bytes:4831102 (4.6 MiB) TX bytes:4831102 (4.6 MiB) 

[root@kvm ~]# wget www.baidu.com
--2016-06-08 13:02:08-- http://www.baidu.com/
正在解析主机 www.baidu.com... 失败:域名解析暂时失败。   #无法访问百度
wget: 无法解析主机地址 “www.baidu.com” 

[root@kvm ~]# export http_proxy=http://10.0.0.136:80 #设定环境变量,指定代理服务器的ip及端口 

[root@kvm ~]# wget www.baidu.com   #可以成功访问百度了
--2016-06-08 13:08:15-- http://www.baidu.com/
正在连接 10.0.0.136:80... 已连接。
已发出 Proxy 请求,正在等待回应... 200 OK
长度:未指定 [text/html]
正在保存至: “index.html.1” 

  [ <=>                         ] 99,762   --.-K/s  in 0.07s 

2016-06-08 13:08:16 (1.36 MB/s) - “index.html.1” 已保存 [99762] 

二、反向代理

介绍文章同正向代理

2.1 环境介绍

1.下面来看下测试页面:

[root@kvm ~]# yum install httpd
[root@kvm ~]# echo "<html>10.0.0.137</html>" > /var/www/html/index.html
[root@lvs-backup ~]# yum install httpd
[root@lvs-backup~]# echo "<html>10.0.0.111</html>" > /var/www/html/index.html 

2.看下效果:

[root@lvs-backup html]# curl 10.0.0.111
<html>
10.0.0.111
</html>
[root@lvs-backup html]# curl 10.0.0.137
<html>
10.0.0.137
</html>
##都成功了,我们进行下一步。 

2.2 配置介绍

[root@lvs-master conf.d]# ls     #nginx目录下的配置文件
zxproxy.conf
[root@lvs-master conf.d]# cp zxproxy.conf fxproxy.conf #复制一份,之前是正向代理,现在是反向代理
[root@lvs-master conf.d]# mv zxproxy.conf zxproxy.conf.bak 
[root@lvs-master conf.d]# cat fxproxy.conf
server {
  listen    80;
  server_name 10.0.0.136; #根据环境介绍,nginx server ip 

  location / {
      proxy_pass http://10.0.0.137; #被代理的服务器ip
        } 

#proxy_pass: proxy_pass URL
#默认值:NO
#使用字段:location,location中的if字段
#这个参数设置被代理服务器的地址和被映射的URL,地址可以使主机名、域名、IP加端口的模式,如:
#proxy_pass  http://192.168.1.6:8099/linuxtone/; 

[root@lvs-master conf.d]# service nginx restart #重启加载配置 

看下结果:

#先登录到实验环境中的clinet机上,ip如下:
[root@elk ~]# ifconfig
eth0   Link encap:Ethernet HWaddr 08:00:27:3D:40:40
     inet addr:10.0.0.139 Bcast:10.255.255.255 Mask:255.0.0.0
     inet6 addr: fe80::a00:27ff:fe3d:4040/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:2618345 errors:0 dropped:0 overruns:0 frame:0
     TX packets:247926 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1000
     RX bytes:336182790 (320.6 MiB) TX bytes:35145157 (33.5 MiB) 

lo    Link encap:Local Loopback
     inet addr:127.0.0.1 Mask:255.0.0.0
     inet6 addr: ::1/128 Scope:Host
     UP LOOPBACK RUNNING MTU:16436 Metric:1
     RX packets:177352 errors:0 dropped:0 overruns:0 frame:0
     TX packets:177352 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0
     RX bytes:26547640 (25.3 MiB) TX bytes:26547640 (25.3 MiB) 

[root@elk ~]# curl 10.0.0.136  #访问反向代理服务器
<html>
10.0.0.137
</html>
#我们看到访问代理服务器,结果被转发到了web server1上。 

#接下来我们分别看下nginx-server和web-server1的日志:
nginx-server:
[root@lvs-master ~]# tail /var/log/nginx/access.log
10.0.0.139- - [08/Jun/2016:15:35:43 +0800] "GET / HTTP/1.1" 200 26 "-" "curl/7.19.7
(x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" "-" 

web-server:
[root@kvm httpd]# tail /var/log/httpd/access_log
10.0.0.136 - - [08/Jun/2016:15:21:12 +0800] "GET / HTTP/1.0" 200 26 "-" "curl/7.19.7
(x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" 

##我们看到nginx-server上的nginx的日志,显示访问的用户是10.0.0.139也就是我们环境的clinet,
#而web-server上显示的ip是10.0.0.136,也就是nginx-server。
#说白了反向代理,对客户来说nginx-server就是真正的服务器,实际上,当用户访问nginx-server的时候,会将请求转发到
#web-server1上,然后web-server1将请求的结果发给nginx-server,然后由ngin小-server将请求的结果转交给用户。 

#在web-server上看到的都是代理的ip,能不能也看到真实用户的ip呢? 

[root@lvs-master conf.d]# cat fxproxy.conf
server {
  listen    80;
  server_name 10.0.0.136;              #根据环境介绍,nginx server ip 

  location / {
      proxy_pass http://10.0.0.137;        #被代理的服务器ip
      proxy_set_header X-Real-IP $remote_addr;  #多了这行
         } 
[root@lvs-master conf.d]# service nginx restart
[root@kvm ~]# tail /var/log/httpd/access_log
10.0.0.136 - - [08/Jun/2016:16:10:53 +0800] "GET / HTTP/1.0" 200 26 "-" "curl/7.19.7
(x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2" 

#改了之后还是显示的是代理服务器的ip,我们去web-server上修改下配置
[root@kvm ~]# vim /etc/httpd/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent 

#修改为:(%h指的的访问的主机,现在改为访问的真实主机ip)
LogFormat "%{X-Real-IP}i</span> %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent</span> 
[root@kvm ~]# service httpd restart
停止 httpd:                        [确定]
正在启动 httpd:                      [确定] 

[root@kvm ~]# tail /var/log/httpd/access_log
10.0.0.136 - - [08/Jun/2016:16:10:53 +0800] "GET / HTTP/1.0" 200 26 "-" "curl/7.19.7
(x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
<span style="color:#FF0000;">10.0.0.139</span> - - [08/Jun/2016:16:16:01 +0800] "GET / HTTP/1.0" 200 26 "-" "curl/7.19.7
(x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.19.1 Basic ECC zlib/1.2.3 libidn/1.18 libssh2/1.4.2"
#已经变成了真实的访问地址 

代理多个web服务器:

[root@lvs-master conf.d]# cat fxproxy.conf
server {
  listen    80;
  server_name 10.0.0.136; 

  location / {
      proxy_pass http://10.0.0.137;
      proxy_set_header X-Real-IP $remote_addr;
        }
  location /web2 {              #多加个location
      proxy_pass http://10.0.0.111;
      proxy_set_header X-Real-IP $remote_addr;
        } 

[root@lvs-backup ~]# cd /var/www/html/  #进入10.0.0.111这个web-server2
[root@lvs-backup html]# mkdir web
[root@lvs-backup html]# echo "<html>10.0.0.111</html>" > index.html
#我们去client上访问试试:
[root@elk ~]# curl 10.0.0.136/web2/
<html>
10.0.0.111
</html>
#访问成功 

三、负载均衡

负载均衡实现的方式有很多,常用的lvs四层负载均衡,nginx是七层负载均衡,可以网上查询相关资料。

3.1 环境介绍

3.2 配置介绍

1.upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。在上面的设定中,通过upstream指令指定了一个负载均衡器的名称1.2.3.4。这个名称可以任意指定,在后面需要用到的地方直接调用即可。

2.Nginx的负载均衡模块目前支持4种调度算法,下面进行分别介绍,其中后两项属于第三方调度算法。

  • 轮询(默认)。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。Weight 指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。
  • ip_hash。每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。
  • fair。这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。
  • url_hash。此方法按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。

3.upstream 支持的状态参数

在HTTP Upstream模块中,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。常用的状态有:

  • down,表示当前的server暂时不参与负载均衡。
  • backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
  • max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
  • fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

注,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。
我们来看下具体配置:

[root@lvs-master conf.d]# cat ../nginx.conf
http {
  include    /etc/nginx/mime.types;
  default_type application/octet-stream; 

  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"'; 

  access_log /var/log/nginx/access.log main; 

  sendfile    on;
  #tcp_nopush   on; 

  keepalive_timeout 65; 

  #gzip on;
upstream 1.2.3.4 {
  server 10.0.0.111:80;
  server 10.0.0.137:80;
  }
  include /etc/nginx/conf.d/*.conf;
} 

[root@lvs-master conf.d]# cat slb.confserver
{
location / {
   proxy_pass http://1.2.3.4; proxy_set_header X-Real-IP $remote_addr;
      }
#注,upstream是定义在server{ }之外的,不能定义在server{ }内部。定义好upstream之后,用proxy_pass引用一下即可。 

4.测试结果

[root@elk ~]# curl 10.0.0.136
<html>
10.0.0.111
</html>
[root@elk ~]# curl 10.0.0.136
<html>
10.0.0.137
</html>
[root@elk ~]# curl 10.0.0.136
<html>
10.0.0.111
</html>
#结果是server1,2交替出现,说明默认是轮询方式的负载均衡。 

5.健康检查

一般健康检查都需要搞个keepalived,但nginx也有相应的参数可以设置。

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

fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用,进行健康状态检查。

[root@lvs-master conf.d]# cat ../nginx.conf
http {
  include    /etc/nginx/mime.types;
  default_type application/octet-stream; 

  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"'; 

  access_log /var/log/nginx/access.log main; 

  sendfile    on;
  #tcp_nopush   on; 

  keepalive_timeout 65; 

  #gzip on;
  upstream 1.2.3.4 {
  server 10.0.0.111:80 weight=1 max_fails=2 fail_timeout=2;
  server 10.0.0.137:80 weight=1 max_fails=2 fail_timeout=2;
  }
  include /etc/nginx/conf.d/*.conf;
  }
[root@lvs-master conf.d]# service nginx restart 

6.测试下结果

[root@kvm httpd]# service httpd stop #关闭web-server1服务
[root@elk ~]# curl 10.0.0.136
<html>
10.0.0.111
</html>
[root@elk ~]# curl 10.0.0.136
<html>
10.0.0.111
</html>
#现在只能访问web-server2了。 

[root@kvm httpd]# service httpd start  #打开web-server1服务
[root@elk ~]# curl 10.0.0.136
<html>
10.0.0.111
</html>
[root@elk ~]# curl 10.0.0.136
<html>
10.0.0.137
</html>
[root@elk ~]# curl 10.0.0.136
<html>
10.0.0.111
</html> 

7.ip_hash的负载均衡

[root@lvs-master conf.d]# cat ../nginx.conf
upstream 1.2.3.4 {
  ip_hash;
  server 10.0.0.111:80 weight=1 max_fails=2 fail_timeout=2;
  server 10.0.0.137:80 weight=1 max_fails=2 fail_timeout=2;
  }
[root@lvs-master conf.d]# service nginx restart
停止 nginx:                        [确定]
正在启动 nginx:                      [确定] 

[root@elk ~]# curl 10.0.0.136
<html>
10.0.0.137
</html>
[root@elk ~]# curl 10.0.0.136
<html>
10.0.0.137
</html>
#配置这种负载均衡后,>每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,
#有效解决了动态网页存在的session共享问题。(一般电子商务网站用的比较多) 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Nginx服务器做负载均衡反向代理的超级攻略

    nginx 做反向代理时,后端主机有多台,可以使用 upstream 定义一个后端主机池,在反向代理时直接使用主机池的名字.在 upstream 中可以定义负载均衡调度算法,权重,健康状态检测等参数. 例如: upstream backend { server 172.16.0.1:80 weight=1 max-fails=3 fail_timeout=10; server 172.16.0.2:80 weight=1max-fails=3 fail_timeout=10;; } 默认请求下,

  • 详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南

    Nginx是一种服务器软件,也是一种高性能的http和反向代理服务器,同时还是一个代理邮件服务器.也就是说,我们在Nginx上可以发布网站,可以实现负载均衡(提高应答效率,避免服务器崩溃),还可以作为邮件服务器实现收发邮件等功能.而最常见的就是使用Nginx实现负载均衡. Nginx与其他服务器的性能比较: Tomcat服务器面向Java语言,是重量级的服务器,而Nginx是轻量级的服务器.Apache服务器稳定.开源.跨平台,但是Apache服务器不支持高并发,Nginx能支持处理百万级的TC

  • Nginx反向代理与负载均衡实战篇

    反向代理 反向代理指的是以代理服务器接收用户的的访问请求,代理用户向内部服务器重新发起请求,最后把内部服务器的响应信息返回给用户.这样,代理服务器对外就表现为一台服务器,而访问内部服务器的客户端用的就是代理服务器,而不是真实网站访问用户. 为什么使用反向代理 可以起到保护网站安全的作用,因为任何来自Internet的请求都必须先经过代理服务器. 通过缓存静态资源,加速Web请求. 实现负载均衡 反向代理例子 环境说明 假如有AB两个服务器.A服务器提供web资源,并且只给内网访问.B服务器有两块

  • nginx 作为反向代理实现负载均衡的例子

    nginx 这个轻量级.高性能的 web server 主要可以干两件事情: 〉直接作为http server(代替apache,对PHP需要FastCGI处理器支持): 〉另外一个功能就是作为反向代理服务器实现负载均衡 以下我们就来举例说明如何使用 nginx 实现负载均衡.因为nginx在处理并发方面的优势,现在这个应用非常常见.当然了Apache的 mod_proxy和mod_cache结合使用也可以实现对多台app server的反向代理和负载均衡,但是在并发处理方面apache还是没有

  • CentOS基于nginx反向代理实现负载均衡的方法

    本文实例讲述了CentOS基于nginx反向代理实现负载均衡的方法.分享给大家供大家参考,具体如下: nginx做负载均衡的优点: 1.工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名.目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,nginx单凭这点可利用的场合就远多于LVS了 2.nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一:相反LVS对网络稳定性依赖比较大,这点本人深有体会

  • 浅谈Nginx七层反向代理和负载均衡

    1.介绍 1.1 Nginx不仅是一个出色的web软件,其七层代理和负载均衡也是相当出色.Nginx做前端代理,当用户请求服务时,可以根据url进行判断,然后分配到不同的后台webserver上. 1.2 Nginx的负载均衡实现原理:首先在http模块中配置使用upstream模块定义后台的web server的池子,名为proxy-web,在池子中我们可以添加多台后台webserver,其中状态检查.调度算法都是在池子中配置:然后在serverr模块中定义虚拟主机,但是这个虚拟主机不指定自己

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

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

  • windows安装nginx部署步骤图解(反向代理与负载均衡)

    一.下载安装Nginx(本文环境为windows xp 32bit环境) 解压nginx-1.0.11.zip,进入nginx-1.0.11,在命令行中执行命令让Nginx启动.具体操作如下图: 测试是否安装成功,输入地址:http://localhost:8090 浏览器显示结果如下图: OK,Nginx部署成功了. 二.关于Nginx的反向代理配置. 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器

  • Nginx正反向代理及负载均衡等功能实现配置代码实例

    这篇文章主要介绍了Nginx正反向代理及负载均衡等功能实现配置代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 系统环境: VirtualBox Manager Centos6.4 nginx1.10.0 IP对应的机器名: IP 机器名 角色名 10.0.0.139 [elk] client 10.0.0.136 [lvs-master] nginx server 10.0.0.137 [kvm] web server 1 10.0.0

  • Nginx使用反向代理实现负载均衡过程解析

    简介 基于docker容器以及docker-compose,所以需要自学docker在linux环境的基本使用 使用两个tomcat作为负载均衡的服务端 1.使用docker拉取tomcat和nginx镜像 拉取nginx参考 拉取tomcat参考 2.使用docker-compose创建两个tomcat服务 新建tomcat目录,在该目录下创建docker-compose.yml文件,输入如下内容: version: '3' services: tomcat1: image: tomcat c

  • 详解Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载: CentOS 6.4下载地址:http://www.jb51.net/softs/78243.html Nginx下载地址:http://www.jb51.net/softs/35633.html 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.nginx作为web服务器的操作讲解.nginx作为LNM

  • 详解Nginx反向代理和负载均衡部署指南

    Nginx反向代理和负载均衡部署指南,具体如下: 1.  安装 1) 从Nginx官网下载页面(http://nginx.org/en/download.html)下载Nginx最新版本(目前是1.5.13版本)安装包: 2)  解压后复制到部署目录. 2.  启动和停止Nginx Nginx目前只支持命令行操作,操作前先进入Dos命令环境,并进入Nginx部署目录. 1) 启动Nginx:start nginx 2)  停止Nginx:nginx -s stop 3)修改配置后重启:nginx

  • Nginx 代理与负载均衡详解

    Nginx 代理与负载均衡详解 nginx除了可以做网站的虚拟主机之外,还可以做代理器,并且, nginx在代理器的基础上可以做到负载均衡.  一.代理器: 所谓代理器,即接受请求,将请求进行转发,得到结果然后返回. 比如,我访问localhost:10010的时候nginx代理到百度的页面.   nginx实现代理: server { listen 10010; server_name localhost; location / { proxy_pass http://www.baidu.co

  • 利用Nginx反向代理与负载均衡搭建多人测试环境详解

    前言 假如我们使用 git 进行版本控制,在一个大型网站中,开发人员在不同的分支上开发不同的需求,当一个需求开发完成需要测试,我们会把这个分支告诉测试人员,然后测试人员在测试机的网站目录拉取这个分支进行测试. 设想这样一个场景:当只有一个分支提测的时候,在测试机上可以直接拉取这个分支的代码进行测试,但是如果同时有多个分支都要同时进行测试,那么就没办法在一台测试机上同时进行了. 因为这台测试机网站目录只有一个,我们无法同时拉取不同分支的代码,那么如何在一台测试机上同时支持多人测试不同的分支呢? 实

随机推荐