Nginx网站服务

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

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 应用场景

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

动态服务

反向代理,负载均衡

缓存服务

面试1Nginx如何实现高并发

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

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

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

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

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

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

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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: nginx