1Nginx基础及编译安装
阅读原文时间:2023年08月27日阅读:1

1Nginx基础

Nginx 功能介绍

Nginx(发音为"engine-x")是一个开源的高性能 HTTP和反向代理服务器。它具有以下功能:

1.静态文件服务:Nginx 可以快速、可靠地提供静态文件,如 HTML、CSS、JavaScript、图像和视频文件等。

2.反向代理:Nginx 可以作为反向代理服务器,将客户端请求转发给后端的多个服务器。它能够优化请求处理和负载均衡,提高整体性能和可靠性。

3.负载均衡:Nginx 可以平衡多个后端服务器的负载,确保请求在这些服务器之间均衡分布,提高系统的可靠性和性能。

4.动态内容缓存:Nginx 可以缓存动态内容,以减少对后端服务器的请求,提高响应速度和吞吐量。

5.SSL/TLS支持:Nginx 可以处理安全连接,支持 SSL/TLS 协议,提供加密通信和证书管理功能。

6.URL 重写:Nginx 具有强大的 URL 重写功能,可以修改请求 URL 的结构,实现 URL 的美化和重定向。

7.日志记录和监控:Nginx 可以记录访问日志,方便后续分析和监控服务器性能。

基础特性

  • 模块化设计,较好的扩展性

  • 高可靠性

  • 支持热部署:不停机更新配置文件,升级版本,更换日志文件

  • 低内存消耗:10000个keep-alive连接模式下的非活动连接,仅需2.5M内存

  • event-driven,aio, (mmap,sendfile)

Apache:

Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适用于多处理器环境,因此,在一个apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。

Nginx

Apache

nginx是一个基于事件的web服务器

apache是一个基于流程的服务器

所有请求都由一个线程处理

单个线程处理单个请求

nginx避免子进程的概念

apache是基于子进程的

nginx类似于速度

apache类似于功率

nginx在内存消耗和连接方面比较好

apache在内存消耗和连接上没有提高

nginx在负载均衡方面表现较好

当流量到达进程极限时,apache将拒绝新的连接。

nginx不支持IBMI和openvms一样的os

apache支持更多的os

nginx只具有核心功能

apache提供了比nginx更多的功能

nginx的性能和可伸缩性不依赖于硬件

apache依赖于cpu和内存等硬件组件

Nginx支持热部署

Nginx支持热部署

Apache: 创建多个进程或线程,而每个进程或线程都会为其分配cpu和内存(线程要比进程小的多,所以worker支持比perfork高的并发),并发过大会榨干服务器资源。

Nginx: 采用单线程来异步非阻塞处理请求(管理员可以配置Nginx主进程的工作进程的数量),不会为每个请求分配cpu和内存资源,节省了大量资源,同时也减少了大量的CPU的上下文切换。所以才使得Nginx 支持更高的并发。

1编译安装nginx

https://nginx.org/en/download.html
#官网
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel
#安装依赖包   

useradd -M -s /sbin/nologin nginx
#新建nginx用户便于管理

cd /opt/   将下载的包放在/opt下
wget http://nginx.org/download/nginx-1.18.0.tar.gz
#官网下载安装包

#解压软件包
tar xf nginx-1.18.0.tar.gz
cd nginx-1.18.0/
​
mkdir /apps/nginx -p  创建将 Nginx 安装到特定的目录。

./configure --help  
#查看帮助模块
​
检测编译环境,并将软件安装到指定目录,并添加模块
./configure --prefix=/apps/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  -j2  使用两核编译  
make install  安装程序

chown -R nginx.nginx /apps/nginx
#修改权限
​
ll /apps/nginx/
total 0
drwxr-xr-x 2 root root 333 Sep 22 12:49 conf
drwxr-xr-x 2 root root  40 Sep 22 12:49 html
drwxr-xr-x 2 root root   6 Sep 22 12:49 logs
drwxr-xr-x 2 root root  19 Sep 22 12:49 sbin
######安装好后生成四个文件功能如下
  1. conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的最核心最主要的配置文件,其他的.conf则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params两个文件,配置文件一般都有个样板配置文件,是文件名.default结尾,使用的使用将其复制为并将default去掉即可。

  2. html目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web文件是默认的错误页面提示页面。

  3. logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比如/var/logs/nginx里面。

  4. sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能。

1.1启动停止nginx

##########启动##############
/apps/nginx/sbin/nginx
#绝对路径启动
​
ln -s /apps/nginx/sbin/nginx /usr/sbin/
#创建软连接后直接 nginx启动
​
##########停止###############
killall  nginx
​

1.2创建Nginx 自启动文件

#复制同一版本的nginx的yum安装生成的service文件
​
vim /usr/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=/apps/nginx/logs/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
​
​
​
systemctl daemon-reload
#重新加载配置
systemctl enable --now nginx
#开机自启并立即启动    如果卡主是应为logs下有 nginx.pid  文件  删除即可
​
​

###如果需要修改pid文件可以执行以下操作#################
mkdir /apps/nginx/run/
#创建目录
vim /apps/nginx/conf/nginx.conf
#修改配置文件
pid   /apps/nginx/run/nginx.pid;
#找到 pid的位置修改