Nginx 反向代理 负载均衡 虚拟主机配置

通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常用配置的说明。即学即用,你还在等什么?一睹为快先了解Nginx的三大功能

Nginx 可以作为一台http服务器。可以做网站静态服务器,比如图片服务器,高效,减轻服务器压力。同时它也支持https服务。

Nginx 可以配置多台虚拟主机。可以实现在一台服务器虚拟出多个网站效果,省钱。

Nginx 最重要的是反向代理,负载均衡。在服务器集群中,Nginx通过反向代理让性能高的服务器分担更多的负载,从而实现负载均衡的效果,利用率高。

效果图:包含基于ip的虚拟主机测试,基于域名的虚拟主机测试,反向代理和负载均衡的测试



环境:CentOS 7 , nginx-1.13.6 ,

说明:Nginx 反向代理和负载均衡的操作前提都是基于域名的虚拟主机。不同的tomcat模拟不同的服务器,和生产环境最大的区别就是ip和port

Nginx 安装:http://www.cnblogs.com/itdragon/p/7850985.html

Nginx http服务器:http://www.cnblogs.com/itdragon/p/7864916.html

配置多台虚拟主机

虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机都可以独立对外提供www服务。从而实现一台主机能对外提供多个web服务,而且每个虚拟主机之间是互不影响的。

Nginx提供了三种虚拟主机配置方式,1、基于ip的虚拟主机,2、基于端口的虚拟主机,3、基于域名的虚拟主机。最常用的是第三种,相对于 ip地址和端口号,域名更方便记忆和使用。

基于ip的虚拟主机

  1. [root@itdragon ~]# cd /etc/sysconfig/network-scripts/
  2. [root@itdragon network-scripts]# ip addr
  3. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
  4. 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  5. inet 192.168.225.131/24 brd 192.168.225.255 scope global dynamic ens33
  6. [root@itdragon network-scripts]# vim ifcfg-ens33
  7. # 添加
  8. IPADDR1="192.168.225.132"
  9. IPADDR2="192.168.225.133"
  10. [root@itdragon network-scripts]# systemctl restart network
  11. [root@itdragon network-scripts]# ip addr
  12. 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
  13. inet 192.168.225.131/24 brd 192.168.225.255 scope global dynamic ens33
  14. inet 192.168.225.132/24 brd 192.168.225.255 scope global secondary ens33
  15. inet 192.168.225.133/24 brd 192.168.225.255 scope global secondary ens33
  16. [root@itdragon ~]# cd /usr/local/nginx
  17. [root@itdragon nginx]# cp -r html/ html-131/
  18. [root@itdragon nginx]# cp -r html/ html-132/
  19. [root@itdragon nginx]# cp -r html/ html-133/
  20. [root@itdragon nginx]# vim html-131/index.html
  21. [root@itdragon nginx]# vim html-132/index.html
  22. [root@itdragon nginx]# vim html-133/index.html
  23. [root@itdragon nginx]# vim conf/nginx.conf
  24. # 添加
  25. server {
  26. listen 80;
  27. server_name 192.168.225.132;
  28. location / {
  29. root html-132;
  30. index index.html index.htm;
  31. }
  32. }
  33. server {
  34. listen 80;
  35. server_name 192.168.225.133;
  36. location / {
  37. root html-133;
  38. index index.html index.htm;
  39. }
  40. }
  41. [root@itdragon nginx]# sbin/nginx -s reload

第一步:执行命令ip addr 打印协议地址,得知网卡名是ens33,ip地址是192.168.225.131

第二步:进入到/etc/sysconfig/network-scripts/ 修改ifcfg-ens33 文件添加两个ip地址

第三步:重启网络,并检查配置是否生效,发现ens33对应三个ip地址

第四步:进入到/usr/local/nginx/ 目录下,拷贝三份html目录,并分别修改index.html 文件便于区分测试

第五步:修改Nginx配置文件,监听的端口不变,修改server_name为对应ip地址,修改root为对应的html目录

第六步:重启Nginx服务,在浏览器上分别访问三个ip地址,观察页面变化

若你发现不同的ip地址打印不同页面,和效果图相似,则代表配置成功。

基于端口的虚拟主机和基于ip的虚拟主机配置几乎一样,只是在修改Nginx配置文件时,只修改监听的端口和root对应的目录,其他的没有变。这里就不贴命令了。

基于域名的虚拟主机

这是Nginx比较常用的配置,也是有利于人类使用的配置方式。这里通过修改window系统下的host文件来模拟DNS服务器。

  1. # Windows
  2. C:\Windows\System32\drivers\etc\hosts文件
  3. # nginx 域名配置虚拟主机
  4. 192.168.225.131 www.itdragon.com
  5. 192.168.225.131 picture.itdragon.com
  6. 192.168.225.131 search.itdragon.com
  7. # CentOS
  8. [root@itdragon nginx]# cp -r html/ html-search
  9. [root@itdragon nginx]# cp -r html/ html-picture
  10. [root@itdragon nginx]# vim html-search/index.html
  11. [root@itdragon nginx]# vim html-picture/index.html
  12. [root@itdragon nginx]# vim conf/nginx.conf
  13. server {
  14. listen 80;
  15. server_name search.itdragon.com;
  16. location / {
  17. root html-search;
  18. index index.html index.htm;
  19. }
  20. }
  21. server {
  22. listen 80;
  23. server_name picture.itdragon.com;
  24. location / {
  25. root html-picture;
  26. index index.html index.htm;
  27. }
  28. }
  29. [root@itdragon nginx]# sbin/nginx -s reload

第一步:在window环境中,修改host文件,添加ip 域名映射关系,用来模拟DNS服务器

第二步:进入到/usr/local/nginx/ 目录下,拷贝两份html目录,分别修改index.html 文件便于区分测试

第三步:修改Nginx配置文件,监听的端口不变,修改server_name为对应域名地址,修改root为对应的html目录

第四步:重启Nginx服务,在浏览器上分别访问两个域名地址,观察页面变化

若你发现不同的域名地址打印不同页面,和效果图相似,则代表配置成功。

Nginx 反向代理

在了解Nginx 反向代理之前,我们先熟悉一下什么是代理服务器

代理服务器:是一个夹在客户机和目标主机中间的服务器。能提高客户机访问响应速度,还能设置防火墙过滤不安全信息。

响应速度快:客户机发送请求,代理服务器接收请求后,再转发给目标主机。目标主机接收请求并将数据返回给代理服务器,代理服务器将数据返回给客户机同时也会保存数据到本地。若客户机下次有相同的请求,则直接从本地数据返回。从而提高了响应的速度。

设置防火墙:因为代理服务器夹在客户机和目标主机中间。客户机所有的请求都会经过代理服务器,所以如果在代理服务器上设置防火墙,则可以过滤一些不安全的信息,同时也方便管理。

清楚了代理服务器后,我们再来了解正向代理和反向代理的区别

正向代理:顾客:"服务员,我就要厨师A做的七彩红烧肉"; 服务员:"好嘞,我这就安排厨师A给您做!"

反向代理:顾客:"服务员,我要一份七彩红烧肉"; 服务员:"好嘞,我们的厨师B炒菜贼好吃!"

不知道大家看懂没有。顾客就是客户机,服务员就是代理服务器,厨师们就是目标主机。正向代理就相当于客户机明确指定目标主机提供服务(目标主机被动接收请求)。反向代理就相当于客户机提供需求,代理服务器从一群目标主机中找一台去实现该需求(目标主机主动接收请求)。

现在开始配置Nginx的反向代理

  1. [root@itdragon ~]# vim /usr/local/solr/tomcat1/webapps/ROOT/index.jsp
  2. [root@itdragon ~]# vim /usr/local/solr/tomcat2/webapps/ROOT/index.jsp
  3. [root@itdragon ~]# cd /usr/local/nginx
  4. [root@itdragon nginx]# vim conf/nginx.conf
  5. upstream searchserver {
  6. server 192.168.225.133:8081;
  7. }
  8. upstream pictureserver {
  9. server 192.168.225.133:8082;
  10. }
  11. server {
  12. listen 80;
  13. server_name search.itdragon.com;
  14. location / {
  15. proxy_pass http://searchserver;
  16. index index.html index.htm;
  17. }
  18. }
  19. server {
  20. listen 80;
  21. server_name picture.itdragon.com;
  22. location / {
  23. proxy_pass http://pictureserver;
  24. index index.html index.htm;
  25. }
  26. }
  27. [root@itdragon nginx]# sbin/nginx -s reload

第一步:准备两个tomcat服务器,端口分别是8081和8082,并分别修改index.jsp 文件便于区分测试

第二步:进入到/usr/local/nginx/ 目录下,修改Nginx配置文件。upstream 定义每个设备的状态,server 配置服务,server_name 指定域名,proxy_pass 代理转发到那台设备上

第三步:重启服务,在浏览器上输入不同的域名,会跳到对应的页面

Nginx的反向代理其实是在做请求的转发,后台有多个http服务器提供服务,Nginx的功能就是把请求转发给后面的服务器,并决定把请求转发给哪台服务器。

反向代理流程

浏览器访问search.itdragon.com,通过本地host文件域名解析,找到192.168.225.131 Nginx虚拟主机,Nginx接收客户机请求,找到server_name为search.itdragon.com的节点,再根据proxy_pass对应的http路径,将请求转发到upstream searchserver上,即端口号为8081的tomcat服务器。

客户机访问 ---> search.itdragon.com ---> host ---> Nginx ---> server_name ---> proxy_pass ---> upstream---> tomcat

Nginx 负载均衡

负载均衡 在高性能的主机上分配更多的负载,在性能低的主机分配少一些的负载,充分利用主机的性能,将其服务器的总压力。Nginx的 upstream默认是以轮询的方式实现负载均衡,也可以分配权值。

  1. [root@itdragon ~]# vim /usr/local/solr/tomcat3/webapps/ROOT/index.jsp
  2. [root@itdragon ~]# vim /usr/local/solr/tomcat4/webapps/ROOT/index.jsp
  3. [root@itdragon ~]# cd /usr/local/nginx
  4. [root@itdragon nginx]# vim conf/nginx.conf
  5. upstream pictureserver {
  6. server 192.168.225.133:8082 weight=2;
  7. server 192.168.225.133:8083 weight=1;
  8. server 192.168.225.133:8084 weight=1;
  9. }
  10. [root@itdragon nginx]# sbin/nginx -s reload

第一步:新增两个tomcat服务器,端口分别为8083和8084,并分别修改index.jsp 文件便于区分测试

第二步:进入到/usr/local/nginx/ 目录下,修改Nginx配置文件,在pictureserver 内新增两个server

第三步:重启服务

负载均衡的配置是在反向代理的基础上修改的,所以请先完成反向代理的配置。

常用配置说明

  1. events { # 工作模式
  2. worker_connections 1024; # 最大连接数
  3. }
  4. http { # 配置http服务器
  5. include mime.types; # 定义mime的文件类型
  6. default_type application/octet-stream; # 默认文件类型
  7. sendfile on; # 开启 sendfile 函数(zero copy 方式)输出文件
  8. keepalive_timeout 65; # 连接超时时间,单位秒
  9. upstream pictureserver { # 定义负载均衡设备的ip和状态
  10. server 192.168.225.133:8081 ; # 默认权重值为一
  11. server 192.168.225.133:8082 weight=2; # 值越高,负载的权重越高
  12. server 192.168.225.133:8083 down; # 当前server 暂时不参与负载
  13. server 192.168.225.133:8084 backup; # 当其他非backup状态的server 不能正常工作时,才请求该server,简称热备
  14. }
  15. server { # 设定虚拟主机配置
  16. listen 80; # 监听的端口
  17. server_name picture.itdragon.com; # 监听的地址,多个域名用空格隔开
  18. location / { # 默认请求 ,后面 "/" 表示开启反向代理,也可以是正则表达式
  19. root html; # 监听地址的默认网站根目录位置
  20. proxy_pass http://pictureserver; # 代理转发
  21. index index.html index.htm; # 欢迎页面
  22. deny 127.0.0.1; # 拒绝的ip
  23. allow 192.168.225.133; # 允许的ip
  24. }
  25. error_page 500 502 503 504 /50x.html;# 定义错误提示页面
  26. location = /50x.html { # 配置错误提示页面
  27. root html;
  28. }
  29. }

具体配置详情可以参考:http://blog.csdn.net/happydream_c/article/details/54943802

总结

1 Nginx 通过修改nginx.conf server_name配置,达到配置多台基于ip,基于域名的虚拟主机

2 Nginx 通过修改nginx.conf upstream 和 proxy_pass配置,达到反向代理效果

3 Nginx 通过修改nginx.conf upstream server 状态,达到负载均衡效果

4 代理服务器有提高客户端获取数据的速度,和方便管理设置防火墙的功能

到这里Nginx的多虚拟主机,反向代理和负载均衡就结束了,感谢阅读!欢迎点赞!

Nginx 反向代理 负载均衡 虚拟主机配置的更多相关文章

  1. 【转】Nginx 反向代理 负载均衡 虚拟主机配置

    原文:http://www.cnblogs.com/itdragon/p/8059000.html Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代 ...

  2. Nginx 反向代理 负载均衡 虚拟主机

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  3. Centos7.4 Nginx反向代理+负载均衡配置

    Ningx是一款高性能的HTTP和反向代理服务器,配置起来也比较简单. 测试环境: 172.16.65.190 Nginx-反向代理 172.16.65.191 Ningx-Web 172.16.65 ...

  4. 十.nginx反向代理负载均衡服务实践部署

    期中集群架构-第十章-nginx反向代理负载均衡章节章节====================================================================== 0 ...

  5. Centos 7.6配置nginx反向代理负载均衡集群

    一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web ...

  6. Centos 7配置nginx反向代理负载均衡集群

    一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web ...

  7. 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

    Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...

  8. 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现

    实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...

  9. 项目实战2.1—nginx 反向代理负载均衡、动静分离和缓存的实现

    总项目流程图,详见 http://www.cnblogs.com/along21/p/8000812.html 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备 ...

随机推荐

  1. Leetcode题解(八)

    26.Remove Duplicates from Sorted Array 题目 直接上代码,方法很简单: class Solution { public: int removeDuplicates ...

  2. win7旗舰版安装IIS

    1.在控制面板中:程序->打开或关闭Windows功能 2.在弹出的对话窗中,在“Internet服务信息”中作如下勾选(打钩的为全选) 点击确定后安装. 3.安装成功后回到控制面板->系 ...

  3. hdu 1520 Anniversary party(入门树形DP)

    Anniversary party Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6926   Accepted: 3985 ...

  4. 【JDK1.8】JDK1.8集合源码阅读——LinkedHashMap

    一.前言 在上一篇随笔中,我们分析了HashMap的源码,里面涉及到了3个钩子函数,用来预设给子类--LinkedHashMap的调用,所以趁热打铁,今天我们来一起看一下它的源码吧. 二.Linked ...

  5. Day1作业-模拟登录

    # /usr/bin/env python# -*- coding: utf-8 -*-# Author:jenvid.yangimport getpassimport shutiluserspwd ...

  6. ionic3 打包安卓平台环境搭建报错解决方案总结

    1.jvm虚拟机提供的运行空间小于项目所需的空间是报错.如图: 解决方法:在环境变量中配置jvm的运行内存大小,大于所需的内存即可. 其中:-Xmx512M可根据实际提示情况,进行更改,如1024M, ...

  7. Linux 新建文件/文件夹,删除文件文件夹,查找文件 打开文件

    1.新建文件夹:mkdir xx 2.新建文件: touch 1.py 3.删除文件/文件夹: rm -r xx  rm 1.py 4.打开文件:cat 1.py 只显示前几行 :head -2 1. ...

  8. Oracle 11g服务器安装详细步骤——图文教程

    1.大家可以根据自己的操作系统是多少位(32位或64位)的,到官网下载相应的安装程序,如下图所示. 有一点需要注意,Oracle的安装程序分成2个文件,下载后将2个文件解压到同一目录即可. 2.下载完 ...

  9. TOMCAT启动到一半停止如何解决

    当你的项目过大的时候,往往会导致你的TOMCAT启动时间过长,启动失败,遇到该情况可以试一下下面两招: TOmcat启动到一半的时候停止了,以下原因: 1.  tomcat启动时间超过了设置时间: 解 ...

  10. oracle导入TYPE对象报错ORA-02304

    Type是我们经常使用的数据库对象结构.我们在实际中,可以单独定义type类型,之后在PL/SQL代码或者数据表中使用. 在一个偶然的机会让笔者发现使用Type类型在数据exp/imp中的麻烦.当我们 ...