Nginx的介绍、自定义编译安装Nginx

目录

一、Nginx的介绍

二、Nginx与Apache的对比

三、源代码编译安装nginx

3.1、首先从 Nginx 官方网站下载 .tar.gz 安装包,地址:nginx: 下载

3.2、 关闭防火墙,关闭 SELinux

 3.3、安装依赖包

3.4、创建运行用户、组

3.5、编译安装nginx

3.6、让系统识别nginx的操作命令

3.7、修改nginx的systemd的配置文件

3.8、修改 PID 文件的路径 


一、Nginx的介绍

Nginx是一个高性能的、轻量级的、开源的Web服务器和反向代理服务器,其具有以下功能:

1、Web服务器:Nginx 可以作为静态内容的 Web 服务器,能够快速高效地响应 HTTP 请求并提供静态文件(如 HTML、CSS、JavaScript、图片等)的访问服务。

2、反向代理:Nginx 作为反向代理服务器可以接收客户端的请求,并将这些请求转发给后端的多个服务器进行处理。它还可以实现负载均衡、高可用性和故障转移,提供更好的性能和可靠性。

3、负载均衡:Nginx 支持多种负载均衡算法,如轮询、加权轮询、IP 哈希等,能够有效地分发请求到多个后端服务器上,避免单点故障,并提高系统的整体吞吐量。

4、动态内容处理:Nginx可以与后端应用服务器(如 PHP-FPM、Node.js、Java 应用服务器等)配合使用,实现动态内容的处理和执行。它可以代理动态请求,并将请求的结果返回给客户端。

5、SSL/TLS 终端:Nginx 提供了 SSL/TLS 协议的支持,可以作为安全终端,负责处理加密通信,保护网站和用户数据的安全。提供安全的 HTTPS 连接。

6、缓存:Nginx 可以作为缓存服务器,缓存经常被请求的内容,从而降低后端服务器的负载,加快网站的访问速度。

7、URL 重写:Nginx 支持 URL 重写,可以通过灵活的配置实现 URL 的重定向和重新构造,满足网站的需求。

8、日志记录:Nginx 能够记录访问日志和错误日志,可以记录请求的详细信息,包括访问时间、请求路径、IP、响应状态等,帮助进行故障排查和性能分析。

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

二、Nginx与Apache的对比

Nginx对比Apache的不同之处:

nginx相对于apache在处理静态文件和高并发请求时表现更为优异,因为nginx采用了异步非阻塞的事件驱动方式,而apache采用的是多进程或者多线程模型,导致在高并发情况下系统消耗的资源更多。

nginx是一个基于事件的web服务器(优势场景:高并发、静态文件服务),apache是一个基于流程的服务器(优势场景:需要灵活配置、强大模块支持的场景)。当有新的请求到达时,nginx会立即将其加入事件队列,然后通过事件循环的方式异步处理这些事件,而不需要为每个请求创建一个新的进程或线程。而apache每个请求都会创建一个独立的进程或线程来进行处理,当流量到达进程极限时,apache将拒绝新的连接。因此nginx更适合负载均衡场景。

nginx避免子进程的概念,apache是基于子进程的

nginx不支持IBMI和openvms一样的os,apache支持更多的os。nginx只具有核心功能,apache提供了比nginx更多的功能。nginx的性能和可伸缩性不依赖于硬件,apache依赖于cpu和内存等硬件组件。

nginx的内存消耗相对更少,因为它使用的是单进程(所有请求都由一个线程处理,或者简单的多进程)和异步事件处理机制。apache消耗的内存比较大,使用的是多进程模型。

nginx可以做到在应用正在运行的时候升级软件,而不需要重新启动应用。apache不行。

Nginx对比Apache的优势:

1、轻量级,nginx比apache 占用更少的内存及资源;
2、静态处理,nginx 静态处理性能比 apache 高 ;
3、nginx可以实现无缓存的反向代理加速,提高网站运行速度;
4、nginx的性能和可伸缩性不依赖于硬件,apache依赖于硬件;
5、nginx支持热部署,启动速度迅速,可以在不间断服务的情况下,对软件版本或者配置进行升级;
6、nginx是异步进程,多个连接可以对应一个进程 ;apache是同步多进程,一个连接对应一个进程;
7、nginx高度模块化,编写模块相对简单,且组件比apache少
8、高并发下nginx 能保持低资源低消耗高性能;
9、nginx 配置简洁, apache配置复杂;

Apache相对于Nginx的优点 :

1、rewrite比nginx的rewrite强大 (rewrite的主要功能就是实现统一资源定位符URL的跳转)
2、模块多,基本想到的都可以找到
3、少bug, nginx的bug相对较多
4、超稳定
5、nginx处理动态请求是弱项,动态请求要apache去做。

三、源代码编译安装nginx

3.1、首先从 Nginx 官方网站下载 .tar.gz 安装包,地址:nginx: 下载

3.2、 关闭防火墙,关闭 SELinux

[root@12 ~]# systemctl stop firewalld
[root@12 ~]# systemctl disable firewalld
[root@12 ~]# setenforce 0

 3.3、安装依赖包

[root@12 ~]# yum -y install gcc pcre-devel openssl-devel zlib-devel openssl  openssl-devel

3.4、创建运行用户、组

useradd -M -s /sbin/nologin nginx

解释命令:useradd -M -s /sbin/nologin nginx

该命令创建一个没有家目录,且登录 shell 为/sbin/nologin 的用户 nginx,其意义是增强安全性。

-M:表示不创建用户家目录。一般在创建系统服务专用用户时,通常不需要为其分配家目录。

-s /sbin/nologin:指定了用户的登录 shell 为/sbin/nologin,这样可以防止该用户通过常规方式登录系统。

3.5、编译安装nginx

[root@12 ~]# cd /opt

//解压包到 /opt 目录下
[root@12 opt]# tar zxvf nginx-1.22.0.tar.gz -C /opt/
[root@12 opt]# cd nginx-1.22.0/

//编译
[root@12 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
[root@12 nginx-1.22.0]# make -j4 && make install

//修改权限
[root@12 nginx-1.22.0]# chown -R nginx.nginx /usr/local/nginx

解释命令:

./configure:是运行配置脚本的命令,用于为 Nginx 编译过程指定各种编译选项。

--prefix=/usr/local/nginx :指定将安装 Nginx 的目标路径为 /usr/local/nginx 。该选项设置了 Nginx 安装的根目录。
--user=nginx :指定 Nginx 运行时的所属用户为 nginx 。该选项设置了 Nginx 进程的运行用户。
--group=nginx :指定 Nginx 运行时的所属用户组为 nginx 。该选项设置了 Nginx 进程的运行用户组。
--with-http_ssl_module :启用 HTTP SSL 模块,允许 Nginx 支持 HTTPS 协议。
--with-http_v2_module :启用 HTTP/2 模块,允许 Nginx 支持 HTTP/2 协议。
--with-http_realip_module :启用 HTTP RealIP 模块,用于获取真实客户端 IP 地址。
--with-http_stub_status_module :启用 HTTP Stub Status 模块,提供简单的服务器状态信息。
--with-http_gzip_static_module :启用 HTTP Gzip Static 模块,用于压缩静态文件的传输。
--with-pcre :启用 PCRE 库,支持正则表达式。
--with-stream :启用 Stream 模块,用于处理 TCP/UDP 流量。
--with-stream_ssl_module :启用 Stream SSL 模块,允许 Nginx 支持 SSL/TLS 加密的 TCP/UDP 流量。
--with-stream_realip_module :启用 Stream RealIP 模块,用于获取真实客户端 IP 地址。

3.6、让系统识别nginx的操作命令

[root@12 nginx-1.22.0]# ln -s /usr/local/nginx/sbin/nginx /usr/sbin/

 解释命令:ln -s /usr/local/nginx/sbin/nginx /usr/sbin/

该命令表示将 /usr/local/nginx/sbin/nginx 文件软链接到 /usr/sbin/

/usr/sbin/目录:该目录下的程序通常只有管理员才有权利执行。/usr/sbin/ 目录下创建一个名为 nginx 的符号链接,指向 /usr/local/nginx/sbin/nginx。

/usr/local/nginx/sbin/nginx:这是源文件的路径( Nginx 可执行文件 ),即要创建符号链接指向的文件路径。

 

3.7、修改nginx的systemd的配置文件

在没有配置 /lib/systemd/system/nginx.service 之前,nginx是不受 systemd 管理的。

[root@12 nginx-1.22.0]# 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

3.8、修改 PID 文件的路径 

[root@12 nginx-1.22.0]# mkdir -p /usr/local/nginx/run/
[root@12 nginx-1.22.0]# vim /usr/local/nginx/conf/nginx.conf
#找到pid的位置,取消注释并修改如下 
pid        /usr/local/nginx/run/nginx.pid;

重新加载并启动

[root@12 nginx-1.22.0]# systemctl daemon-reload
[root@12 nginx-1.22.0]# systemctl start nginx.service

验证:在浏览器的在地址栏的输入框中输入本机ip并访问

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值