Nginx安装

30 阅读4分钟

1、Nginx是一个高性能的Web服务器,能处理静态和动态请求

2、是一个反向代理服务器,将动态请求转发给后端应用服务器

3、支持负载均衡,能转发分流,处理高并发。

安装

环境配置

关闭防火墙 禁止开机自启动

systemctl stop firewall

systemctl disable firewalld

image.png

查看防火墙状态, 看到 Active: inactive (dead),防火墙已关闭

image.png

查看selinux

getenforce

image.png

临时关闭selinux

setenforce 0

切换为宽松模式,重启后失效

image.png

直接修改配置文件,vim /etc/selinux/config

image.png

image.png

修改 SELINUX=disabled

image.png

重启 reboot

image.png

使用EPEL安装

安装epel的源仓库

这里失败了,因为CentOS已经停止维护了,

image.png

先检测网络连通和DNS

测试能否访问外网(能ping通则网络正常) ping -c 3 www.baidu.com

测试DNS解析(返回IP则DNS正常) nslookup mirrors.aliyun.com

image.png

备份原有 yum 源配置(避免修改出错)

创建备份目录 mkdir -p /etc/yum.repos.d/bak

备份所有.repo文件 mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/

image.png

下载阿里云 CentOS 7 yum 源和 EPEL 源配置

wget -O /etc/yum.repos.d/CentOS-Base.repo mirrors.aliyun.com/repo/Centos…

image.png

下载nginx

yum install -y nginx

image.png

检验nginx版本

image.png

启动nginx服务并开机自启

image.png

查看nginx状态

image.png

访问默认页面

image.png

nginx配置文件

查看配置文件

image.png

image.png

user nginx; 使用者是nginx

worker_processes auto;

启动多少个工作进程,这里得auto,是根据cpu核心数自动设置

error_log /var/log/nginx/error.log;

错误日志存放位置

pid /run/nginx.pid;

进程文件保存位置,记录主进程id,便于进程管理

include /usr/share/nginx/modules/*.conf; 启动时加载得模块配置的文件

events { worker_connections 1024; }

一个工作进程最多可以处理的链接数

http的相关设置

image.png

image.png

log_format main 'remoteaddrremote_addr - remote_user [timelocal]"time_local] "request" ' 'statusstatus body_bytes_sent "http_referer" ' '"http_user_agent" "$http_x_forwarded_for"';

log_format 定义日志格式,

$remote_addr 客户端的IP地址

$remote_user 客户端通过http认证的用户名(未认证为空)

[$time_local] 服务器本地的访问时间

"$request" 客户端的完整请求行

$status 服务器返回客户端的HTTP状态码

$body_bytes_sent 服务器发给客户端的响应体字节数

"$http_referer" 记录请求是从哪个页面跳转的(来源页面)

"$http_user_agent" 客户端的用户代理信息

"$http_x_forwarded_for" 记录真实的客户端IP,Nginx作为反向代理时

image.png

启用访问日志,用刚刚的main格式记录

传输性能相关

image.png

sendfile on (磁盘直接映射网络套接字)

开启sendfile() 系统调用,由内核直接将文件数据从磁盘映射到网络套接字(零拷贝),大幅减少 CPU 开销和内存拷贝,提升静态文件(如图片、JS、CSS)的传输速度。

磁盘——>网络套接字

传统方式:Nginx 先从磁盘读取文件到用户态内存,再从用户态内存写入到网络套接字(两次拷贝、两次上下文切换)。

磁盘——>用户态内存——>网络套接字

tcp_nopush on(小数据包攒成大数据包)

仅在 sendfile on 时生效,启用 TCP_CORK 选项(Linux 内核)。

将多个小数据报攒成大数据包发送,减少 TCP 握手次数和网络小包的传输开销(减少 MSS 分段),特别适合大文件传输(如视频、压缩包)(配合sendfile使用,单开无意义)。

tcp_nodelay on(立即发小数据包)

启用 TCP_NODELAY 选项,禁用 Nagle 算法。

Nagle 算法默认会「攒小包」以减少网络传输次数,但会导致小数据请求(如动态接口、短连接)的延迟增加,开启 tcp_nodelay 后,小数据包会立即发送,降低实时性请求的延迟(如 API 接口、WebSocket 通信)。

keepalive_timeout 65

设置 HTTP 长连接(Keep-Alive)的超时时间,单位为秒。65 表示:如果客户端 65 秒内没有新的请求,Nginx 主动关闭这个长连接。取值范围 10~120 秒,太短则连接复用率低,太长则占用过多服务器套接字资源。

types_hash_max_size 4096(用于快速查找文件类型)

设置 Nginx 解析 MIME 类型的哈希表最大尺寸。Nginx 会把 mime.types 文件中的「文件扩展名→MIME 类型」映射存储在哈希表中,types_hash_max_size 控制这个哈希表的桶数量。

关于文件类型配置的文件,让Nginx知道.JPG .html是哪一内容的类型

image.png

默认的文件类型配置文件,在上述mime.types无法找到是会启用默认配置

image.png

加载虚拟主机的配置

image.png

默认虚拟主机的配置

image.png

listen 80; 监听服务器的ipv4 80端口

listen [::]:80; 监听服务器的ipv6 80端口

server_name _;

这是 Nginx 中表示「默认服务器」的特殊值当客户端请求的域名没有匹配到 Nginx 中其他 server 块的 server_name(比如直接访问服务器 IP、或访问未配置的域名)时,该 server 块会处理这个请求;

root /usr/share/nginx/html;

定义该服务器块的网站根目录,Nginx 会从这个目录读取静态文件

加载默认配置的附加配置

include /etc/nginx/default.d/*.conf;

404返回页面

image.png

服务器错误返回的页面

image.png

下面注释掉的是https虚拟主机的一个模板

image.png

nginx命令

nginx

启动nginx

`nginx -s stop

systemctl stop nginx `

强制停止

nginx -s quit

等待完成当下任务后停止

nginx -s reload

重新加载配置

nginx -t

检查配置是否有语法错误

systemctl start nginx

启动

systemctl restart nginx

重启

systemctl status nginx

查看状态