二进制安装Nginx——详细

☆ Nginx概述

Nginx (engine x) 是一个高性能的HTTP和反向代理Web服务器,同时也提供了IMAP/POP3/SMTP等邮件服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日 => F5公司,负载均衡器(硬件)

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

bash 复制代码
# curl -I 域名地址
Server:Nginx

☆ 常见用法

  • 1) Web服务器软件 httpd(apache) 同类型web服务器软件:apache nginx(俄罗斯) iis(微软) lighttpd(德国)
  • 2) 提供了IMAP/POP3/SMTP服务
  • 3) 充当反向代理服务器,实现负载均衡功能。LB=>Load Blance

☆ Nginx特点

  • ① 高可靠:稳定性 master进程 管理调度请求分发到哪一个worker=> worker进程 响应请求 一master多worker
  • ② 热部署 :(1)平滑升级(不停机升级)(2)快速重载配置(不重启Nginx服务,就可以重新加载配置文件)
  • ③ 高并发:可以同时响应更多的请求 事件 底层:epoll模型
  • ④ 响应快:尤其在处理静态文件上,响应速度很快 sendfile
  • ⑤ 低消耗:cpu和内存 1w个请求,内存2~3MB
  • ⑥ 分布式支持:反向代理 七层负载均衡(应用层),新版本也支持四层负载均衡

☆ 常见安装方式

  • ① yum安装配置,需使用Nginx官方源或者EPEL源(优点:安装简单,操作方便;缺点:版本相对固定,定制性特别差。)yum/glibc包(二进制软件包),相当于别人已经对源代码进行打包,生成可执行文件,根据这个可执行文件就可以实现软件安装。
  • ② 源码编译(优点:定制性比较强,可以选择性开启或关闭某些功能,本身比较稳定;缺点:安装比较复杂 => 安装时间长)

☆ 编译安装Nginx

  • 源码编译安装 => 获取别人开发好的软件源代码(没有打包)=> ① 基础配置(软件未来安装路径,选择要安装功能)② 编译(把配置好的源代码进行打包,生成一个可执行的二进制文件)③ 安装(把生成的可执行的二进制文件进行安装操作)
  • 软件的编译安装过程:编译安装三步走(配置 + 编译 + 安装)

① 配置软件./configure

② 编译,生成可执行的软件包make

③ 安装make install

源码,Linux底层都需要安装gcc!

第一步:安装依赖库
bash 复制代码
yum -y install pcre-devel zlib-devel openssl-devel
  • openssl-devel:让Nginx可以支持https协议
  • http 与 https区别-------http端口:80,传输过程没有通过ssl进行加密,明文传输,有安全隐患。早期浏览器默认使用http协议,新版本不推荐使用http协议,内部项目可以采用http。 https端口:443,需要配置ssl证书(免费,3个月要续订一次;收费,1-3年续订一次,大概1000左右一年),加密传输,数据传输过程中都会通过ssl进行加密,相对于http更加安全。
第二步:创建账号
bash 复制代码
useradd -r -s /sbin/nologin www
第三步:配置/编译与安装
bash 复制代码
tar xvf nginx-1.24.0.tar.gz 
cd nginx-1.24.0 
./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module 
make && make install
编译参数说明

|--------------------------------|--------------------------------------|
| 参数 | 作用 |
| --prefix | 编译安装到的软件目录 |
| --user | worker进程运行用户 |
| --group | worker进程运行用户组 |
| --with-http_ssl_module | 支持https 需要 pcel-devel依赖 |
| --with-http_stub_status_module | 基本状态信息显示 查看请求数、连接数等 |
| --with-http_realip_module | 定义客户端地址和端口为header头信息 常用于反向代理后的真实IP获取 |

☆ Nginx目录介绍

|------|---------------------------|
| 目录 | 作用 |
| conf | 配置文件(nginx.conf) |
| html | 网站默认目录(源代码目录) |
| logs | 日志(access.log、error.log) |
| sbin | 可执行文件 [软件的启动 停止 重启 重载等] |

  • Nginx比较特殊:既支持重启操作,也支持重载操作!
  • 重启:停服,重新启动
  • 重载:不停服,重新加载配置文件

☆ 软件操作参数

|-----------|--------------------------------------|
| 参数 | 作用 |
| -V | 显示Nginx版本号以及配置选项 |
| -s signal | stop关闭 quit优雅的关闭 reopen重开日志 reload重载 |

常用命令:

启动Nginx

bash 复制代码
cd /usr/local/nginx 
sbin/nginx -c /usr/local/nginx/conf/nginx.conf

强制关闭:如果有正在处理的http请求,也会立即被中断

bash 复制代码
sbin/nginx -s stop

优雅关闭:如果有正在处理的http请求,先处理完成后,在关闭

bash 复制代码
sbin/nginx -s quit

不停服重载:如果在Nginx运行期间,修改了nginx.conf配置文件

bash 复制代码
sbin/nginx -s reload

☆ Nginx服务配置

注意:一定要提前把Nginx停止掉 sbin/nginx -s stop

bash 复制代码
# Nginx服务配置到该文件中
# vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=Nginx Web
Server After=network.target

[Service] Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target

# 扩展: Type=forking,forking代表后台运行

启动Nginx服务:

bash 复制代码
# systemctl daemon-reload 
# systemctl start nginx

设置Nginx开机启动:

bash 复制代码
# systemctl enable nginx

重启Nginx:

bash 复制代码
systemctl restart nginx

重载Nginx:

bash 复制代码
systemctl reload nginx

关闭Nginx:

bash 复制代码
systemctl stop nginx

本 篇 完 结 ... ...


持 续 更 新 中 ... ...

相关推荐
仙柒4152 小时前
Docker原理
运维·docker·容器
茉莉玫瑰花茶6 小时前
工作流的常见模式 [ 1 ]
java·服务器·前端
Cat_Rocky6 小时前
Kubernetes集群升级指南以及自动更新证书
云原生·容器·kubernetes
米高梅狮子6 小时前
第2章 docker容器
运维·docker·云原生·容器·架构·kubernetes·自动化
kidwjb7 小时前
信号量在进程中的使用
linux·进程间通信
闵孚龙7 小时前
Claude Code Ultraplan 远程多代理规划全解析:AI Agent、CCR远程容器、异步规划、状态机、计划传送与企业级自动化治理
运维·人工智能·自动化
南京码讯光电技术有限公司8 小时前
工业无线AP选型指南:从WiFi 5到WiFi 6+5G CPE,如何构建全覆盖、零漫游、高可靠的智能工厂网络?
服务器·网络·5g
sulikey8 小时前
个人Linux操作系统学习笔记2 - gcc与库的理解
linux·笔记·学习·操作系统·gcc·
二宝哥9 小时前
Linux虚拟机网络配置
linux·运维·服务器
卧室小白9 小时前
docker网络与服务编排与集群
运维·docker·容器