欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx入门配置详解

程序员文章站 2022-06-13 15:26:28
...

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(历史版本),点击即可下载。
Nginx入门配置详解


  本文涉及的操作:
  (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地址。
Nginx入门配置详解


一、配置虚拟主机

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

    #配置虚拟主机段
    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,如下图所示配置成功。至此说明我们以不同的端口访问,进而转向了不同的虚拟主机。
Nginx入门配置详解
Nginx入门配置详解


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,以便区分。
Nginx入门配置详解
  配置文件如下图所示,域名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,分别如下图所示,至此说明我们以不同的域名访问,进而转向了不同的虚拟主机。
Nginx入门配置详解
Nginx入门配置详解


二、配置负载均衡

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

2.2配置反向代理。
  我们需要的是,通过不同的域名访问Nginx,然后通过Nginx转发给不同的Tomcat(注意与“通过端口区分不同虚拟主机”的区别,它是没有进行转发到其他服务器的)。
  在此我们先复制两个Tomcat,并修改Tomcat的默认主页加以区分。
Nginx入门配置详解
  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的主页之前已经分别修改),说明反向代理配置成功。
Nginx入门配置详解
Nginx入门配置详解


2.3配置负载均衡。
  了解了反向代理及其配置后,继续配置负载均衡,因为负载均衡是需要反向代理来实现的。
  再复制一个tomcat-2,修改其主页,加以区分,并修改其三个端口(参照2.2)。
Nginx入门配置详解
  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入门配置详解


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