Nginx网站服务

Nginx

Nginx概念

一款高性能、轻量级Web服务软件,稳定性高,系统资源消耗低

对HTTP并发连接的处理能力高,单台物理服务器可支持30000~50000个并发请求

注意:实际操作之中,很多公司为了服务器的稳定,都会设置在20000个左右

Nginx的主要功能

**静态文件服务:**Nginx 可以直接提供静态文件的服务,例如 HTML、CSS、JavaScript、图像等,高效地处理并响应静态文件的请求

**反向代理:**Nginx 可以作为反向代理服务器,将客户端的请求转发给后端的多个服务器

它可以实现负载均衡、高可用性和故障转移,提供更好的性能和可靠性。

**动态内容处理:**Nginx可以与后端应用服务器(如 PHP-FPM、Node.js、Java 应用服务器等)配合使用,

实现动态内容的处理和执行。它可以代理动态请求,并将请求的结果返回给客户端。

**SSL/TLS 加密支持:**Nginx 支持通过 SSL/TLS 对客户端和服务器之间的通信进行加密,提供安全的 HTTPS 连接

虚拟主机支持:Nginx 可以在同一台服务器上托管多个域名或站点,每个虚拟主机可以拥有独立的配置和资源

URL 重写和重定向:Nginx 支持灵活的 URL 重写和重定向规则,可以对请求的 URL 进行修改和重写,实现 URL 的美化和重定向

**缓存机制:**Nginx 自带缓存功能,可以缓存静态文件和动态内容,以减轻后端服务器的负载并提供更快的响应速度

日志记录:详细记录访问日志和错误日志,包括记录请求的详细信息,包括访问时间、请求路径、IP、响应状态等,

帮助进行故障排查和性能分析。

**access.log:**记录访问成功的记录

**error.log:**记录访问失败的记录

注:系统控制的日志在/var/log/messages中,只有自己的业务日志保存在日志的功能之中

可扩展性和灵活性:Nginx 的模块化架构和强大的配置选项使得它具有很高的可扩展性和灵活性

nginx 应用场景

静态服务器 (图片、视频服务、文本)

动态服务

反向代理,负载均衡

缓存服务

(面试1)Nginx如何实现高并发?

1.因为自身的代码,大量的代码进行了优化,同时自带一个epoll功能模块,支持高并发

2.Nginx是一个master进程控制多个work进程,master进程主要是负责收集和分发请求,work才是实际的执行者

每一个请求进来master都会拉起一个work进程来处理请求,work处理的请求的过程只受内存大小的影响,并且本身处理请求所占用

的内存也很小,所以可以处理大并发

master也负责监听work的状态(work的数量一般是cpu一致或者2倍),二者之间相互依赖相互补充

(面试2)Nginx为什么不使用多线程?

Apache: 创建多个进程或线程,而每个进程或线程都会为其分配 cpu 和内存

(线程要比进程小的多,所以worker支持比perfork高的并发),并发过大会耗光服务器资源

Nginx: 采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主进程的工作进程的数量)(epoll),不会为每个请求分配cpu和内

存资源,节省了大量资源,同时也减少了大量的CPU的上下文切换。所以才使得Nginx支持更高的并发

安装Nginx服务

1.先去官网下载软件包

2.关闭防火墙,将安装nginx所需软件包传到/opt目录下

systemctl stop firewalld

systemctl disable firewalld

setenforce 0

3.安装依赖包

#nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件

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

yum -y install pcre-devel.x86_64 zlib-devel.x86_64 openssl-devel.x86_64 gcc gcc-c++ make

4.创建运行用户、组

(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)

useradd -M -s /sbin/nologin nginx

5.编译安装Nginx

cd /opt

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

cd nginx-1.22.0/

./configure --prefix=/usr/local/nginx \

--user=nginx \

--group=nginx \

--with-http_ssl_module \

--with-http_v2_module \

--with-http_realip_module \

--with-http_stub_status_module \

--with-http_gzip_static_module \

--with-pcre \

--with-stream \

--with-stream_ssl_module \

--with-stream_realip_module

make -j 4 && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #使系统能够识别nginx的操作命令

6.检查、启动、重启、停止 nginx服务

nginx有两种进程:

master进程(主进程):管理工作进程,启动时读取配置文件

worker进程(工作进程):处理用户连接请求

/usr/local/sbin/nginx #启动nginx,使用绝对路径或者绝对路径

nginx -t #检查配置文件是否配置正确

nginx #启动

扩展

#停止

cat /usr/local/nginx/logs/nginx.pid #先查看nginx的PID号

kill -3 <PID号>

kill -s QUIT <PID号>

killall -3 nginx

killall -s QUIT nginx

#重载

kill -1 <PID号>

kill -s HUP <PID号>

killall -1 nginx

killall -s HUP nginx

#日志分割,重新打开日志文件

kill -USR1 <PID号>

#平滑升级

kill -USR2 <PID号>
kill的相关编号

| 信号编号 | 信号名 | 含义 |

| -------- | ------ | ------------------------------------------------------------ |

| 0 | EXIT | 程序退出时收到该信息。 |

| 1 | HUP | 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。 |

| 2 | INT | 表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。 |

| 3 | QUIT | 退出。 |

| 9 | KILL | 杀死进程,即强制结束进程。 |

| 11 | SEGV | 段错误。 |

| 15 | TERM | 正常结束进程,是 kill 命令的默认信号 |

7.添加nginx服务

如果在添加之前服务已经打开,需要先关服务,在添加打开

vim /lib/systemd/system/nginx.service

Unit

Description=nginx - high performance web server

Documentation=http://nginx.org/en/docs/

After=network-online.target remote-fs.target nss-lookup.target

Wants=network-online.target

Service

Type=forking

PIDFile=/usr/local/nginx/run/nginx.pid

#注意文件位置,如果不对 启动不了

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

#注意启动文件位置

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s TERM $MAINPID

Install

WantedBy=multi-user.target

8.创建目录/修改配置文件

mkdir -p /usr/local/nginx/run/ #创建目录

vim /usr/local/nginx/conf/nginx.conf #修改配置文件

pid /usr/local/nginx/run/nginx.pid; #找到 pid的位置修改

systemctl daemon-reload #重新加载配置

systemctl enable --now nginx

#开机自启并立即启动 如果卡主是应为logs下有 nginx.pid 文件 删除即可

chown -R nginx.nginx /usr/local/nginx #修改权限

systemctl start nginx.service

systemctl enable nginx.service

相关推荐
YUNYINGXIA14 小时前
Nginx+keepalived主从,双主架构
网络·nginx·keepalived
Hello.Reader14 小时前
NGINX 四层共享内存区同步模块实战 `ngx_stream_zone_sync_module`
运维·nginx
北城笑笑15 小时前
Server 11 ,⭐通过脚本在全新 Ubuntu 系统中安装 Nginx 环境,安装到指定目录( 脚本安装Nginx )
linux·运维·前端·nginx·ubuntu
jarenyVO17 小时前
Nginx全面深入学习目录
运维·学习·nginx
笨手笨脚の18 小时前
Nginx-2 详解处理 Http 请求
运维·网络协议·nginx·http
苹果醋319 小时前
SpringCloud Alibaba场景实践(Nacos篇)
java·运维·spring boot·mysql·nginx
Hello.Reader1 天前
NGINX 四层上游模块`ngx_stream_upstream_module` 实战指南
运维·nginx
hie988941 天前
[nginx]反向代理grpc
运维·nginx·iphone
海天胜景2 天前
nginx 配置返回 文件大小
运维·nginx
一眼万年042 天前
NGINX 高并发 HTTP 处理深度解析
nginx·微服务