栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Nginx的基本应用

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nginx的基本应用

Nginx的基本应用
  • 一、 Nginx的安装与启动
    • 1.1 Nginx的概念
    • 1.2 使用docker安装Nginx
    • 1.3 使用外部机器访问nginx
    • 1.4 使用Linux安装Nginx
      • 1.4.1 环境准备
      • 1.4.2 Nginx下载
      • 1.4.3 Nginx安装
      • 1.4.4 Nginx启动与访问
  • 二、 Nginx静态网站部署
    • 2.1 静态网站的部署
    • 2.2 配置虚拟主机
      • 2.2.1 端口绑定
      • 2.2.2 域名
        • 2.2.2.1 域名 -- 域名的概念
        • 2.2.2.2 域名 -- 域名级别
        • 2.2.2.3 域名 -- 域名绑定
  • 三、 Nginx反向代理与负载均衡
    • 3.1 反向代理
      • 3.1.1 反向代理的概念
      • 3.1.2 配置反向代理
        • 3.1.2.1 配置反向代理 -- 准备工作
        • 3.1.2.2 配置反向代理 -- 配反向代理
    • 3.2 负载均衡
      • 3.2.1 负载均衡的概念
      • 3.2.2 配置负载均衡
        • 3.2.2.1 配置负载均衡 -- 准备工作
        • 3.2.2.2 配置负载均衡 -- 配置负载均衡

一、 Nginx的安装与启动 1.1 Nginx的概念

Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔•西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支撑5万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。
Nginx应用场景:

  1. http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器。
  2. 虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。
  3. 反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。
1.2 使用docker安装Nginx

这里使用docker安装nginx,linux如何安装nginx参考文档Nginx在Linux下的安装.md

  1. 搜索nginx镜像
docker search nginx
  1. 拉取nginx镜像
docker pull nginx
  1. 创建容器,设置端口映射、目录映射
# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf

user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
  worker_connections 1024;
}
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;
  include /etc/nginx/conf.d/*.conf;
}

docker run -id --name=c_nginx 
-p 80:80 
-p 81:81 
-p 82:82 
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf 
-v $PWD/conf.d:/etc/nginx/conf.d 
-v $PWD/logs:/var/log/nginx 
-v $PWD/html:/usr/share/nginx/html 
nginx

参数说明:

  • -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
  • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf挂载到容器的 :/etc/nginx/nginx.conf。配置目录
  • -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器 的/var/log/nginx。日志目录
~/nginx/conf.d/80.conf
server {
  listen 80; # 监听的端口
  server_name localhost; # 域名或ip
  location / { # 访问路径配置
    root /usr/share/nginx/html;# 根目录
    index index.html index.htm; # 默认首页
  }
  error_page 500 502 503 504 /50x.html; # 错误页面
  location = /50x.html {
    root html;
  }
}

1.3 使用外部机器访问nginx

1.4 使用Linux安装Nginx

重新准备一台虚拟机组作为服务器。比如IP地址为192.168.177.129

1.4.1 环境准备

需要安装gcc的环境(此步省略)

yum install gcc c++

第三方的开发包
PCRE
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括perl兼容的正则表达式库。Nginx的http模块使用pcre来解析正则表达式,所以需要再linux上安装pcre库。

yum install -y pcre pcre-devel

注: pcre-devel是使用pcre开发的一个二次开发库,nginx也需要此库。
zlib
zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

yum install -y zlib zlib-devel
1.4.2 Nginx下载

官方网站下载nginx:http://nginx.org/
我目前使用的版本是1.8.0版本

1.4.3 Nginx安装

第一步: 把nginx的源码包nginx-1.8.0.tar.gz上传到linux系统
第二步: 解压缩

tar zxvf nginx-1.8.0.tar.gz

第三步: 进入nginx-1.8.0目录 使用comfigure命令创建一makeFile文件。

./configure 
--prefix=/usr/local/nginx 
--pid-path=/var/run/nginx/nginx.pid 
--lock-path=/var/lock/nginx.lock 
--error-log-path=/var/log/nginx/error.log 
--http-log-path=/var/log/nginx/access.log 
--with-http_gzip_static_module 
--http-client-body-temp-path=/var/temp/nginx/client 
--http-proxy-temp-path=/var/temp/nginx/proxy 
--http-fastcgi-temp-path=/var/temp/nagin/fastcgi 
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi 
--http-scgi-temp-path=/var/temp/nginx/scgi

执行后可以看到Makefile文件

Makefile的概念:
Makefile是一种配置文件,Makefile一个工程的源文件不计数,其按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为Makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。

./configure 
--prefix=/usr  # 指向安装目录
--sbin-path=/usr/sbin/nginx  # 指向(执行)程序文件(nginx)
--conf-path=/etc/nginx/nginx.conf  # 指向配置文件
--error-log-path=/var/log/nginx/error.log  # 指向log
--http-log-path=/var/log/nginx/access.log  #指向http-log
--pid-path=/var/run/nginx/nginx.pid  # 指向pid
--lock-path=/var/lock/nginx.lock   # 安装文件锁定,防止安装文件呗别人利用,或自己误操作
--user=nginx 
--group-nginx 
--with-http_ssl_module   # 启用ngx_http_ssl_module支持(使支持https请求,需已安装)

第四步:编译

make

第五步:安装

make install
1.4.4 Nginx启动与访问

注意:启动nginx之前,上边将临时文件目录指定为/var/temp/nginx/client,需要在/var下创建此目录

mkdir /var/temp/nginx/client -p

进入到Nginx目录下的sbin目录

cd /usr/loacl/ngiux/sbin

输入命令启动Nginx

./nginx

启动后查看进程

ps aux|grep nginx

地址栏输入虚拟机的IP即可访问(默认为80 端口)
关闭nginx:

./nginx -s stop

或者

./nginx -s quit

重启nginx:
1、 先关闭后启动
2、 刷新配置文件

./nginx -s reload
二、 Nginx静态网站部署 2.1 静态网站的部署

将/资料/静态页面/index目录下的所有内容 上传到服务器的/usr/local/nginx/html下即可访问。

2.2 配置虚拟主机

虚拟主机,也叫“网站空间”,就是把一台运行在互联网上的物理服务器划分成多个“虚拟”服务器。虚拟主机技术极大的促进了网络技术的应用和普及。同时虚拟主机的租用服务也成了网络时代的一种新型经济形式。

2.2.1 端口绑定
  1. 上传静态网站:
    将/资料/静态页面/index目录上传至 /usr/local/nginx/index下
    将/资料/静态页面/regist目录上传至 /usr/local/nginx/regist下
  2. 修改Nginx 的配置文件:~/nginx/config.d/port.conf
server {
  listen 81; # 监听的端口
  server_name localhost; # 域名或ip
  location / { # 访问路径配置
    root /usr/share/nginx/index; # 根目录
    index index.html index.htm; # 默认首页
  }
  error_page 500 502 503 504 /50x.html; # 错误页面
  location = /50x.html {
    root html;
  }
}
server {
  listen 82; # 监听的端口
  server_name localhost; # 域名或ip
  location / { # 访问路径配置
    root /usr/share/nginx/regist; # 根目录
    index regist.html; # 默认首页
  }
  error_page 500 502 503 504 /50x.html; # 错误页面
  location = /50x.html {
    root html;
  }
}

  1. 访问测试:
    地址栏输入http://192.168.177.129/:81 可以看到首页面
    地址栏输入http://192.168.177.129/:82 可以看到注册页面
2.2.2 域名 2.2.2.1 域名 – 域名的概念

域名(Domain Name),是由一串用“点”分隔的字符组成的,Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置,地理上的域名,指代有行政自主权的一个地方区域)。域名是一个IP地址上有“面具” 。域名的目的是便于记忆和沟通的一组服务器的地址(网站,电子邮件,FTP等)。域名作为力所能及难忘的互联网参与者的名称。域名按域名系统 (DNS)的规则流程组成。在DNS中注册的任何名称都是域名。域名用于各种网络环境和应用程序特定的命名和寻址目的。通常,域名表示互联网协议(IP)资源,例如用于访问因特网的个人计算机,托管网站的服务器计算机,或网站本身或通过因特网传送的任何其他服务。世界上第一个注册的域名是在 1985年1月注册的。

2.2.2.2 域名 – 域名级别
  1. 顶级域名
    顶级域名又分为两类:
    一是国家顶级域名(national top-level domainnames,简称nTLDs),200多个国家都按照ISO3166国家代码分配了顶级域名,例如中国是cn,美国是us,日本是jp等;
    二是国际顶级域名(international top-level domain names,简称iTDs),例如表示工商企业的 .Com .Top,表示网络提供商的.net,表示非盈利组织的.org,表示教育的.edu,以及没有限制的中性域名如.xyz等。大多数域名争议都发生在com的顶级域名下,因为多数公司上网的目的都是为了赢利。但因为自2014年以来新顶级域名的发展,域名争议案件数量增长幅度越来越大[5] 。为加强域名管理,解决 域名资源的紧张,Internet协会、Internet分址机构及世界知识产权组织(WIPO)等国际组织经过广泛协商, 在原来三个国际通用顶级域名:(com)的基础上,新增加了7个国际通用顶级域名:firm(公 司企业)、store(销售公司或企业)、Web(突出WWW活动的单位)、arts(突出文化、娱乐活动的 单位)、rec (突出消遣、娱乐活动的单位)、info(提供信息服务的单位)、nom(个人),并在世界范围 内选择新的注册机构来受理域名注册申请。
    例如:baidu.com

  2. 二级域名
    二级域名是指顶级域名之下的域名,在国际顶级域名下,它是指域名注册人的网上名称,例如 ibm, yahoo,microsoft等;在国家顶级域名下,它是表示注册企业类别的符号,例如.top,com,edu, gov,net等。
    中国在国际互联网络信息中心(Inter NIC) 正式注册并运行的顶级域名是CN,这也是中国的一级域名。在顶级域名之下,中国的二级域名又分为类别域名和行政区域名两类。类别域名共7个, 包括用于科研机构的ac;用于工商金融企业的com、top;用于教育机构的edu;用于政府部门的 gov;用于互联网络信息中心和运行中心的net;用于非盈利组织的org。而行政区域名有34个,分别对应于中国各省、自治区和直辖市。
    例如:map.baidu.com

  3. 三级域名
    三级域名用字母( A~Z,a~z,大小写等)、数字(0~9)和连接符(-)组成, 各级域名之间用实点(.)连接,三级域名的长度不能超过20个字符。如无特殊原因,建议采用申请人的英文名(或者缩写)或者汉语拼音名 (或者缩写) 作为三级域名,以保持域名的清晰性和简洁性。
    例如: item.map.baidu.com

2.2.2.3 域名 – 域名绑定

域名与IP绑定:
一个域名对应一个 ip 地址,一个 ip 地址可以被多个域名绑定。
本地测试可以修改 hosts 文件(C:WindowsSystem32driversetc)
可以配置域名和 ip 的映射关系,如果 hosts 文件中配置了域名和 ip 的对应关系,不需要走dns 服务器。
192.168.177.129 www.cart.com
192.168.177.129 regist.search.com
做好域名指向后,修改nginx配置文件 domain.conf

server {
  listen 80;
  server_name www.cart.com;
  location / {
    root /usr/share/nginx/cart;
    index cart.html;
  }
}
server {
  listen 80;
  server_name www.search.com;
  location / {
    root /usr/share/nginx/search;
    index search.html;
  }
}

三、 Nginx反向代理与负载均衡 3.1 反向代理 3.1.1 反向代理的概念

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器 对外就表现为一个反向代理服务器。
首先我们先理解正向代理,如下图:

正向代理是针对你的客户端,而反向代理是针对服务器的,如下图

3.1.2 配置反向代理 3.1.2.1 配置反向代理 – 准备工作

在docker中部署tomcat

  1. 搜索tomcat镜像
docker search tomcat
  1. 拉取tomcat镜像
docker pull tomcat
  1. 创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat 
-p 8080:8080 
-v $PWD:/usr/local/tomcat/webapps 
tomcat

参数说明:

  • -p 8080:8080:将容器的8080端口映射到主机的8080端口
  • -v $PWD:/usr/local/tomcat/webapps:将主机中当前目录挂载到容器的webapps
3.1.2.2 配置反向代理 – 配反向代理
~/nginx/conf.d/proxy.conf
upstream tomcat-my{
  server 192.168.220.12:8080;
}
server {
  listen 80; # 监听的端口
  server_name www.mytomcat.com; # 域名或ip
  location / { # 访问路径配置
    # root index;# 根目录
    proxy_pass http://tomcat-my;
    index index.html index.htm; # 默认首页
  }
}

重新启动Nginx 然后⽤浏览器测试:http://www.kkb.com (此域名须配置域名指向)

3.2 负载均衡 3.2.1 负载均衡的概念

负载均衡 建立在现有网络结构之上,它提供一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、 FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

3.2.2 配置负载均衡 3.2.2.1 配置负载均衡 – 准备工作
  1. 使用docker创建3个tomcat容器,端口分别为8080 ,8081,8082 。
docker run -id --name=c_tomcat1 
-p 8081:8080 
-v $PWD:/usr/local/tomcat/webapps 
tomcat
docker run -id --name=c_tomcat2 
-p 8082:8080 
-v $PWD:/usr/local/tomcat/webapps 
tomcat
  1. 分别启动这三个tomcat服务。
  2. 为了能够区分是访问哪个服务器的网站,可以在首页标题加上标记以便区分。
3.2.2.2 配置负载均衡 – 配置负载均衡

修改 Nginx配置文件:lb.conf

upstream tomcat-huike {
  server 192.168.220.12:8080;
  server 192.168.220.12:8081;
  server 192.168.220.12:8082;
}
server {
  listen 80; # 监听的端口
  server_name www.huike.com; # 域名或ip
  location / { # 访问路径配置
    # root index;# 根目录
    proxy_pass http://tomcat-huike;
    index index.html index.htm; # 默认首页
  }
  error_page 500 502 503 504 /50x.html; # 错误页面
  location = /50x.html {
    root html;
  }
}

地址栏输入http:// www.hmtravel.com / 刷新观察每个网页的标题,看是否不同。
经过测试,三台服务器出现的概率各为33.3333333%,交替显示。
如果其中一台服务器性能比价好,想让其承担更多的压力,可以设置权重。
比如想让NO.1出现次数是其它服务器的2倍,则修改配置如下:

upstream tomcat-travel {
  server 192.168.177.129:8080;
  server 192.168.177.129:8081 weight=2;
  server 192.168.177.129:8082;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/887635.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号