Nginx简单使用

Nginx简单使用

一、简介

官网:http://nginx.org/

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

1.1、应用场景

1、http 服务器。Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器。

2、虚拟主机。可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。

3、反向代理,负载均衡最常用。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用 nginx 做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

二、下载与安装

2.1、下载

进入官网:http://nginx.org/

可以直接进入下载页面:http://nginx.org/en/download.html

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Mainline version:开发版,如果是正常服务器搭建环境,不建议使用此版本,毕竟是开发版,还存在一些漏洞;

Stable version:稳定版,如果是在生产线上搭建环境,建议使用此版本;

Legacy versions:以往老版本的稳定版,如果要使用老版本的,可以在此进行下载;

2.2、安装前准备

  • 需要安装 gcc 的环境
yum install gcc-c++
  • PCRE

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

yum install -y pcre pcre-devel

注:pcre-devel 是使用 pcre 开发的一个二次开发库,nginx 也需要此库。

  • zlib

zlib 库提供了很多种压缩和解压缩的方式,nginx 使用 zlibhttp 包的内容进行 gzip,所以需要在 linux 上安装 zlib 库。

yum install -y zlib zlib-devel
  • OpenSSL

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。nginx 不仅支持 http 协议,还支持 https(即在 ssl 协议上传输 http),所以需要在 linux安装 openssl 库。

yum install -y openssl openssl-devel

上面这四个一个一个的安装会很麻烦,可以执行下面这行命令,一次性就把上面的全部安装了。

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

这样就安装成功了。

在这里插入图片描述

2.3、安装

nginx上传到服务器,并解压到制定目录。

tar zxvf nginx-1.18.0.tar.gz -C /opt/nginx/

加压完成之后,进入 nginx-1.18.0目录,执行以下命令。注意:这里可以根据自己的需求来更改,例如安装目录,日志目录这些。

./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/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

configure参数
./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请求,需已安装openssl)
–with-http_flv_module \ 启用ngx_http_flv_module支持(提供寻求内存使用基于时间的偏移量文件)
–with-http_stub_status_module \ 启用ngx_http_stub_status_module支持(获取nginx自上次启动以来的工作状态)
–with-http_gzip_static_module \ 启用ngx_http_gzip_static_module支持(在线实时压缩输出数据流)
–http-client-body-temp-path=/var/tmp/nginx/client/ \ 设定http客户端请求临时文件路径
–http-proxy-temp-path=/var/tmp/nginx/proxy/ \ 设定http代理临时文件路径
–http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \ 设定http fastcgi临时文件路径
–http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ 设定http uwsgi临时文件路径
–http-scgi-temp-path=/var/tmp/nginx/scgi \ 设定http scgi临时文件路径
–with-pcre 启用pcre库

nginx-1.18.0目录下自动创建了Makefile文件,这是一个文件。

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

在这里插入图片描述

  • 编译

在当前目录直接执行这个命令就可以编译了,和安装redis一样。

make
  • 安装
make install

安装完成之后,到安装目录下面看一下是否有nginx。我这里的安装目录是 /usr/local/nginx,在上面指定的。

cd /usr/local/nginx

在这里插入图片描述

注意:http客户端请求临时文件需要手动创建。

在这里插入图片描述

mkdir -p /var/temp/nginx/client

2.4、启动、关闭和刷新配置

进入nginx安装目录下的sbin目录,这个目录中只有一个名叫nginx的文件,直接执行这个文件即可。

cd /usr/local/nginx/sbin
  • 启动

启动你会发现很快,相当于执行的不是启动文件,而是一个命令一样。默认端口是 80端口,注意服务器上的 80端口一定要开发才能够访问到。

./nginx
  • 查看启动进程
ps aux|grep nginx

在这里插入图片描述

在浏览器访问服务器地址,端口号可以不用添加,默认是80端口。能够看到下面这个欢迎界面,就表示安装成功了。

在这里插入图片描述

  • 关闭
./nginx -s stop

或者

./nginx -s quit
  • 刷新配置
./nginx -s reload
  • 重启

重启就先关闭在启动就行了。

三、静态网页部署

nginx安装目录下有一个html的目录,直接将你的静态网页放到html目录下。最初这个目录下默认有两个html文件,可以直接删掉,放自己需要的静态网页。

注意:安装目录是你创建文件指定的那个,不是你编译的那个。

在这里插入图片描述

nginx访问的时候会访问html这个目录下面的index.html这个页面,如果你这里面没有这个页面的,需要在配置文件中配置。具体怎么配置,在“端口绑定”那里会讲到。

重新启动nginx就可以访问了,启动、关闭这些命令都是在nginx安装目录下的sbin目录中执行。

案例

我在html目录下放入一个 index.html页面,重新启动nginx服务器,在页面输入服务器访问。

在这里插入图片描述

在这里插入图片描述

四、配置虚拟主机

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

4.1、端口绑定

​ 上面的静态网页部署里面会存在一个问题,如果我们部署的并不止一个静态资源,而是很多个静态资源。那么将需要部署的静态资源上传到nginx安装目录下,与html目录同级。

​ 在配置文件中配置,配置文件在nginx安装目录下的conf目录中有一个名为nginx.conf的文件,这个就是nginx的配置文件了。

在这里插入图片描述

​ 上传两个静态网站到nginx安装目录下,当我访问80端口显示 html/index.html这个页面,81端口显示 html/business/business.html82端口显示 html/heart/heart.html这个页面。

在这里插入图片描述

修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf

在原来的 server下面添加一下配置。

server {
    listen       81;
    server_name  localhost;

    location / {
        root   business;
        index  business.html;
    }      
}
server {
    listen       82;
    server_name  localhost;

    location / {
        root   heart;
        index  heart.html;
    }      
}

listen 端口号

root nginx目录下的静态资源目录

index 静态资源目录下访问的页面。

在这里插入图片描述

重新启动,就可以访问到了。注意:需要将指定的端口开放了。并且建议直接访问IP地址,如果IP绑定了域名,域名必须要备案。

在这里插入图片描述
在这里插入图片描述

4.2、域名绑定

域名绑定的目的就是避免输入端口号,因为在客户端输入端口号是一件不太方便的事情,我们就可以统一使用80端口,配置不同域名来区分访问的资源。

修改Nginx 的配置文件:/usr/local/nginx/conf/nginx.conf

server {
    listen       80;
    server_name  www.it307.top;

    location / {
        root   business;
        index  business.html;
    }      
}

server_name更改成域名

  • 刷新一下配置
./nginx -s reload

这样配置域名不备案也能访问到

五、Nginx反向代理与负载均衡

5.1、反向代理和正向代理

  • 反向代理

反向代理(Reverse Proxy)Internet访问私有主机。反向代理方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

在这里插入图片描述

  • 正向代理

正向代理一般就说代理,例如:一个公司只有一台机器可以连接Internet,那么其他员工需要连接外网,怎么办呢?这时就可以将这台机器做个代理服务器,然后公司其他机器连接这台代理服务器,代理服务器有去连接外网。外网返回来的资源又经过代理服务器转发给员工机器上,所有的外网资源都会经经过代理服务器。是内部私有机器访问外网资源,这就是正向代理。而反向代理刚好相反,是外网资源访问内部私有服务器。哪些访问国外网站的软件也是这个思路,他的服务器可以连接外网,而我们的不能。那么就把他的服务器作为一个代理服务器,我们连接他的服务器,他再转发我们的请求,这样我们就可以访问到国外的东西。

在这里插入图片描述

  • 反向代理配置
upstream mcp-portal {
	server 106.54.136.81:8081; # 需要访问转发的地址
}
server {
    listen       80;
    server_name  www.it307.top; # 访问的域名,域名一定要备案
    location / {
   		 proxy_pass   http://mcp-portal;
    }
}

upstream 名称,这个名称可以随便写, proxy_pass http:// 对应前面的这个名称。

  • 负载均衡
upstream mcp-portal {
    server 106.54.136.81:8081; # 需要访问转发的地址
    server 106.54.136.81:8082;
    server 106.54.136.81:8083;
    server 106.54.136.81:8084;
}
server {
    listen       80;
    server_name  www.it307.top; # 访问的域名,域名一定要备案
    location / {
    	proxy_pass   http://mcp-portal;
    }
}

upstream mcp-portal { 这里可以写多个web地址},但是直接这样配置,第一次访问第一个而地址,第二次访问第二个地址,一直这样循环执行。

    upstream mcp-portal {
	   server 106.54.136.81:8081; # 需要访问转发的地址
	   server 106.54.136.81:8082 weight=2;
    }
    server {
        listen       80;
        server_name  www.it307.top; # 访问的域名,域名一定要备案
        location / {
            proxy_pass   http://mcp-portal;
        }
   }

weight=2 访问量而 2

一般8081访问一次,8082访问2次,但不是说绝对这样。

六、高可用方案

nginx 作为负载均衡器,所有请求都到了 nginx,可见 nginx 处于非常重点的位置,如果nginx 服务器宕机后端 web 服务将无法提供服务,影响严重。

为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务 IP 并继续提供负载均衡服务;当备份管理器又从主管理器收到“I am alive”这样的信息时,它就释放服务 IP 地址,这样的主服务器就开始再次提供负载均衡服务。

keepalived简介

keepalived 是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。

Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,或工作出现故障,Keepalived 将检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器工作正常后 Keepalived 自动将 web 服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的 web 服务器。

keepalived 是以 VRRP 协议为实现基础的,VRRP 全称 Virtual Router Redundancy Protocol,即虚拟路由冗余协议。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将 N 台提供相同功能的

路由器组成一个路由器组,这个组里面有一个 master 和多个 backup,master 上面有一个对外提供服务的 vip(VIP = Virtual IPAddress,虚拟 IP 地址,该路由器所在局域网内其他机器的默认路由为该 vip),master 会发组播,当 backup 收不到 VRRP 包时就认为 master 宕掉了,这时就需要根据 VRRP 的优先级来选举一个 backup 当 master。这样的话就可以保证路由器的高可用了。

keepalived 主要有三个模块,分别是 core、check 和 VRRP。core 模块为 keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check 负责健康检查,包括常见的各种检查方式。VRRP 模块是来实现 VRRP 协议的。

七、最容易出现的错误

错误一

nginx: [emerg] unexpected end of file, expecting "}" in /usr/local/nginx/conf/nginx.conf:139

这个说139有个毛病,一般出现这种情况有可能是少大括号,或者分号这种情况。去检查,如果139行啥都没有,那么很有可能是少写大括号了。如果139行有配置文件,那么很有可能是没有分号。因为在配置文件的途中少大括号定位是不准确的,他需要编译到配置文件最底部才发现你少了一个大括号。而配置语句不一样,编辑到哪里就能定位到。

错误二

启动、关闭或者重启的时候会报一下错误。

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

在这里插入图片描述

原因是nginx/logs目录下没有 nginx.pid这个文件,因为在 nginx.conf配置文件中,默认不生成 logs/nginx.pid文件的。我们第一次配置nginx的时候,需要把 nginx.conf配置文件中将 pid logs/nginx.pid;打开注释,在启动nginx就会在 logs目录下生成 nginx.pid这个文件。

在这里插入图片描述

如果我们已经启动nginx了,停也停不掉,也不能重启,一直报这个错。我们先将配置文件中这个注释去掉,然后指定配置文件操作。

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

/usr/local/nginx/sbin/nginx 启动nginx (如果重启或者关闭也可以直接在这里写命令)

-c /usr/local/nginx/conf/nginx.conf 指定配置文件

例如实现关闭操作:/usr/local/nginx/sbin/nginx -s stop -c /usr/local/nginx/conf/nginx.conf

如果这样都不行,可以直接强制结束nginx进程,重新启动,或者重启服务器,重新启动nginx。

八、卸载nginx

使用命令查询包含nginx的文件,然后在将这些文件删除,如果是docker的就不用删除了。

 find  / -name nginx
rm  -rf /文件名

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值