nginx配置以及后续出现的问题

前言

在使用服务器的时候我们不可避免使用到nginx,接下里就是配置nginx的流程和遇到的问题解决。


提示:以下是本篇文章正文内容,下面案例可供参考

一、nginx是什么?

1、nginx介绍


Nginx (engine x) 是一个高性能的 HTTP 和 反向代理 服务,也是一个IMAP/POP3/SMTP服务。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好

在高连接并发的情况下,Nginx是Apache服务器不错的替代品

2、为什么选择nginx


作为web服务器
作为负载均衡服务器
作为邮件代理服务器
Nginx 安装非常的简单,配置文件 非常简洁(还能够支持perl语法),Bugs非常少的服务器


3、IO多路复用


3.1、I/O multiplexing(多并发)


第一种方法就是最传统的多进程并发模型 (每进来一个新的I/O流会分配一个新的进程管理。)

第二种方法就是I/O多路复用 (单个线程,通过记录跟踪每个I/O流(sock)的状态,来同时管理多个I/O流)

I/O multiplexing 这里面的 multiplexing 指的其实是在单个线程通过记录跟踪每一个Sock(I/O流)的状态来同时管理多个I/O流。发明它的原因,是尽量多的提高服务器的吞吐能力。 在同一个线程里面, 通过拨开关的方式,来同时传输多个I/O流

3.2、Nginx使用epoll接收请求的过程
ngnix会有很多连接进来, epoll会把他们都监视起来,然后像拨开关一样,谁有数据就拨向谁,然后调用相应的代码处理。

epoll:

epoll 可以说是I/O 多路复用最新的一个实现,epoll 修复了poll 和select绝大部分问题, 比如:

epoll 现在是线程安全的
epoll 现在不仅告诉你sock组里面数据,还会告诉你具体哪个sock有数据,你不用自己去找了

3.3、异步、非阻塞

 [root@centos ~]# pstree |grep nginx
 |-+= 81666 root nginx: master process nginx
 | |--- 82500 nobody nginx: worker process
 | --- 82501 nobody nginx: worker process


每进来一个request,会有一个worker进程去处理。但不是全程的处理,处理到什么程度呢?处理到可能发生阻塞的地方,比如向上游(后端)服务器转发request,并等待请求返回。那么,这个处理 的worker不会这么一直等着,他会在发送完请求后,注册一个事件:“如果upstream返回了,告诉我一声,我再接着干”。于是他就休息去了。这就是异步。此时,如果再有request 进来,他就可以很快再按这种方式处理。这就是非阻塞和IO多路复用。而一旦上游服务器返回了,就会触发这个事件,worker才会来接手,这个request才会接着往下走。这就是异步回调。
                        
原文链接:https://blog.youkuaiyun.com/lerp020321/article/details/141257205

二、安装步骤

1.安装

1.1.第一种直接官网下载解压安装

下载 Nginx,下载地址:nginx: download

1.2.直接在命令下载

(1)更新yum

确保是最新版本不然可能出现找不到某个命令的现象

sudo yum update

(2)下载

cd /etc/nginx
sudo yum install nginx

(3)重启nginx

sudo systemctl start nginx

2.访问请求

请求IP的端口就可以访问到了

三、遇到的问题

1.镜像来源问题Errors during downloading metadata for repository 'appstream':

Errors during downloading metadata for repository 'appstream':
  - Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=stock [Could not resolve host: mirrorlist.centos.org]
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=stock [Could not resolve host: mirrorlist.centos.org]

这个错误通常是由于无法解析 mirrorlist.centos.org 这个域名导致的,可能是网络问题或者 DNS 配置问题。

可以尝试先检查您的网络连接是否正常。

也可以尝试修改 CentOS 的镜像源来解决这个问题。

我使用修改镜像解决,先保存原本的镜像文件。

sudo cp /etc/yum.repos.d/CentOS-Linux-AppStream.repo /etc/yum.repos.d/CentOS-Linux-AppStream.repo.bak
sudo cp /etc/yum.repos.d/CentOS-Linux-BaseOS.repo /etc/yum.repos.d/CentOS-Linux-BaseOS.repo.bak

然后编辑 CentOS-Linux-AppStream.repo 和 CentOS-Linux-BaseOS.repo 文件,将其中的 mirrorlist 开头的行注释掉,并将 baseurl 开头的行取消注释,并修改为可用的国内镜像源地址,例如阿里云的镜像源:

[AppStream]
name=CentOS Linux 8 - AppStream
#mirrorlist=http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=stock
baseurl=http://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

[BaseOS]
name=CentOS Linux 8 - BaseOS
#mirrorlist=http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=BaseOS&infra=stock
baseurl=http://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/
gpgcheck=1
enabled=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official

修改后再次下载就没问题了。

2.请求IP显示无法访问此网页,花太长时间相应

先查看端口是否被占用

sudo lsof -i :80

像这样

就是没有被占用,如果占用可以通过kill解决它。

后续我也查看了server端口号和我请求的是否一致。

以及设置访问时间,防止超时。都没有解决这个问题,最后查看了服务器端口发现是端口没有开启访问。

我本次使用的是华为云,所以先登录华为云。

找到配置安全组规则

加入端口访问权限

再次请求就可以了


总结

在解决的问题过程中我也学习和了解了很多新的知识,加深了我对nginx的理解。nginx的特性也在访问中更加清晰明了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值