Nginx入门配置详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32625839/article/details/81606742

Nginx入门配置详解

  前言(必读):Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,在开发中很常用。本文讲解Nginx常用配置,讲解目录如下:
  一、配置虚拟主机
    1.1通过端口区分不同虚拟主机。
    1.2通过域名区分虚拟主机。
  二、配置负载均衡
    2.1反向代理。
    2.2配置反向代理。
    2.3配置负载均衡。
  Linux安装方法自行百度,以下是基于Windows版本讲解的,Windows版本安装的话只需要下载后解压就行了,除了命令稍有不同,配置文件及使用方法和Linux是一模一样的。
  官网下载地址:http://nginx.org/en/download.html 选择Stable version(稳定版)下右边的Windows版本,左边是Linux版本,或者选择Legacy versions(历史版本),点击即可下载。
这里写图片描述


  本文涉及的操作:
  (1)Linux下常用命令:
    启动Nginx:./nginx
    重启Nginx:./nginx -s reload
    关闭Nginx:./nginx -s quit
  (2)Windows下常用命令(可进入的安装目录下,按住shift+右键,选择在此打开cmd窗口或者Powershell窗口):
    启动Nginx:start .\nginx.exe
    重启Nginx:.\nginx.exe -s reload
    关闭Nginx:.\nginx.exe -s quit
  (3)配置自定义域名:
  文章中涉及的域名,其实是修改系统的hosts文件(Windows10系统在C:\Windows\System32\drivers\etc目录下)。
  hosts文件的作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录网址时,系统会首先自动从hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析,因此测试情况下,可以修改hosts文件,将自定义的域名对应IP地址。
这里写图片描述


一、配置虚拟主机

1.1通过端口区分不同虚拟主机。
  如下所示,第一个虚拟主机监听的80端口,并且匹配的目录是html文件夹下的index.html;第二个虚拟主机监听的81端口,并且匹配的目录是html81文件夹下的index.html。记得先复制html文件夹并重命名为html81,修改里面的index.html。
这里写图片描述

    #配置虚拟主机段
    server {
        #监听的80端口
        listen       80;
        #监听的域名
        server_name  localhost;
        #匹配规则。
        location / {
            #html文件夹,相对目录,相对于安装目录,也可写成绝对路径。
            root   html;
            #欢迎页,首页排序
            index  index.html index.htm;
        }
    }

    #配置虚拟主机段
    server {
        #监听的81端口
        listen       81;
        #监听的域名
        server_name  localhost;
        #匹配规则。
        location / {
            root   html81;
            index  index.html index.htm;
        }
    }

  配置后启动Nginx,分别访问域名localhost(不加端口默认是80端口)和localhost:81,如下图所示配置成功。至此说明我们以不同的端口访问,进而转向了不同的虚拟主机。
这里写图片描述
这里写图片描述


1.2通过域名区分虚拟主机。
  如果多个网站都是要用80端口,那只能通过域名区分虚拟主机了,先简单(大概)解释一下什么是域名,域名就是网站,例如:
  www.baidu.com
  www.taobao.com
  DNS服务器把域名解析为ip地址,保存的就是域名和ip的映射关系。
  一级域名:
  baidu.com
  taobao.com
  二级域名:
  www.baidu.com
  image.baidu.com
  item.baidu.com
  三级域名:
  abc.image.baidu.com
  aaa.image.baidu.com
  一个域名对应一个ip地址,一个ip地址可以被多个域名绑定。


  如下图所示,先复制两个html文件夹分别命名为htmla和htmlb,再修改它们的index.html,以便区分。
这里写图片描述
  配置文件如下图所示,域名www.a.com和www.b.com分别对应文件夹htmla和htmlb,监听的都是80端口:

#配置虚拟主机段
server {
    #监听的80端口
    listen       80;
 #监听的域名
    server_name  www.a.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
 #匹配规则。
    location / {
     #htmla文件夹,相对目录,相对于安装目录,也可写成绝对路径。
        root   htmla;
        index  index.html index.htm;
    }
}

#配置虚拟主机段
server {
    #监听的80端口
    listen       80;
 #监听的域名
    server_name  www.b.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
 #匹配规则。
    location / {
        root   htmlb;
        index  index.html index.htm;
    }
}

  重新启动Nginx,访问域名www.a.com和www.b.com,分别如下图所示,至此说明我们以不同的域名访问,进而转向了不同的虚拟主机。
这里写图片描述
这里写图片描述


二、配置负载均衡

2.1反向代理。
  配置负载均衡之前我们先了解什么是反向代理以及它如何配置。
  反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

2.2配置反向代理。
  我们需要的是,通过不同的域名访问Nginx,然后通过Nginx转发给不同的Tomcat(注意与“通过端口区分不同虚拟主机”的区别,它是没有进行转发到其他服务器的)。
  在此我们先复制两个Tomcat,并修改Tomcat的默认主页加以区分。
这里写图片描述
  tomcat-1的端口配置默认,修改tomcat-3的HTTP端口为8082(注意启动多个tomcat时,需要修改分别它们的三个端口,主要内容如下图所示)。

<Server port="8007" shutdown="SHUTDOWN">
...
<Connector port="8082" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
...
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />

  Nginx配置如下,监听80端口的域名www.sohu.com,反向代理到127.0.0.1:8080的tomcat服务器,监听80端口的域名www.sina.com,反向代理到127.0.0.1:8082的tomcat服务器。

#两个域名指向同一台nginx服务器,用户访问不同的域名就转向不同的服务。
#upstream sohu和upstream sina合起来就是叫做反向代理,Nginx在中间做了一个代理服务器的角色。

#upstream sohu和location中的proxy_pass http://sohu; 相对应。
upstream sohu {
    server 127.0.0.1:8080;
}

#配置虚拟主机段
server {
    #监听的80端口
    listen       80;
    #监听的域名
    server_name  www.sohu.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    #匹配规则。
    location / {
        proxy_pass   http://sohu;
        index  index.html index.htm;
    }
}

#upstream sina和location中的proxy_pass http://sina; 相对应。
upstream sina {
    server 127.0.0.1:8082;
}

#配置虚拟主机段
server {
    #监听的80端口
    listen       80;
    #监听的域名
    server_name  www.sina.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    #匹配规则。
    location / {
        proxy_pass   http://sina;
        index  index.html index.htm;
    }
}

  启动Nginx,分别访问www.sohu.com和www.sina.com,如下图所示(两个tomcat的主页之前已经分别修改),说明反向代理配置成功。
这里写图片描述
这里写图片描述


2.3配置负载均衡。
  了解了反向代理及其配置后,继续配置负载均衡,因为负载均衡是需要反向代理来实现的。
  再复制一个tomcat-2,修改其主页,加以区分,并修改其三个端口(参照2.2)。
这里写图片描述
  Nginx配置如下,监听80端口的域名www.sohu.com,反向代理到127.0.0.1:8080的tomcat服务器,和127.0.0.1:8081的tomcat服务器,并且配置权重,分别为1,不配置默认也是为1,可以根据服务器的实际情况调整服务器权重,权重越高分配的请求越多,权重越低,请求越少。

#负载均衡,一个“对外的”服务由多个“内部的”服务提供。
#负载均衡需要通过反向代理来实现。
#upstream sohu和location中的proxy_pass http://sohu; 相对应。
upstream sohu {
    server 127.0.0.1:8080 weight=1;
    server 127.0.0.1:8081 weight=1;
}

#配置虚拟主机段
server {
    #监听的80端口
    listen       80;
    #监听的域名
    server_name  www.sohu.com;
    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    #匹配规则。
    location / {
        proxy_pass   http://sohu;
        index  index.html index.htm;
    }
}

  启动Nginx,多次访问www.sohu.com,发现每次都是访问到不同的tomcat主页,如下图所示(两个tomcat的主页之前已经分别修改),说明负载均衡配置成功。这里写图片描述
这里写图片描述


  至此,Nginx的主要用途及配置方法已经讲解完毕,此教程是入门的,主要是给新手一个整体观,了解Nginx可以做什么,以及怎么做(简单的配置是怎么配的),如果觉得本文不错,可以关注我。

猜你喜欢

转载自blog.csdn.net/qq_32625839/article/details/81606742