Nginx基础知识
Nginx简介:
Nginx(发音为"engine X")是一个高性能的开源Web服务器,也可以用作反向代理服务器、负载均衡器、HTTP缓存以及作为邮件代理服务器。Nginx以其出色的性能、高可靠性和低资源消耗而闻名,因此在许多大型网站和应用中被广泛使用。
Nginx的一些主要特点和优势:
-
高性能和高并发处理能力:Nginx采用了事件驱动的异步架构,能够有效地处理大量并发连接,提供出色的性能表现。
-
低资源消耗:相比传统的Web服务器,如Apache,Nginx的内存和CPU使用率更低,能够更有效地利用服务器资源。
-
模块化设计:Nginx具有丰富的模块化设计,允许用户通过加载不同的模块来扩展其功能,例如HTTP反向代理、负载均衡、SSL/TLS加密、URL重写等。
-
灵活的配置选项:Nginx提供了灵活且易于理解的配置选项,使用户可以轻松地定制和优化服务器配置,以满足特定的需求。
-
高度可靠性:Nginx经过了长时间的生产环境验证,在高负载和高流量的情况下表现稳定可靠。
-
支持反向代理和负载均衡:Nginx可以作为反向代理服务器,将请求转发给后端的应用服务器,也可以实现负载均衡,将流量分发到多个服务器上,提高系统的稳定性和性能。
-
HTTP缓存:Nginx支持HTTP缓存功能,可以将静态内容缓存到内存或磁盘中,加速网站的访问速度。
Nginx开源版的安装方式:
- 编译安装
- 包管理器(YUM、apt等安装)
- 我们这里使用yum安装
YUM安装Nginx:
配置官网yum源,一键安装即可
cat > /etc/yum.repos.d/nginx.repo << 'EOF'
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
EOF
2.清空yum源,安装最新版nginx
yum clean all
yum install nginx -y
systemctl start nginx
systemctl enable nginx
常用命令
nginx -s stop 快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit 平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload 因改变了Nginx相关配置,需要重新加载配置而重载。
nginx -s reopen 重新打开日志文件。
nginx -c filename 为 Nginx 指定一个配置文件,来代替缺省的。
nginx -t 不运行,仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
nginx -v 显示 nginx 的版本。
nginx -V 显示 nginx 的版本,编译器版本和配置参数。
Nginx安装后配置文件的位置
YUM安装
/etc/nginx/nginx.conf #主配置文件
/etc/nginx/conf.d #子配置文件 用户配置虚拟机
/var/log/nginx/access.log
/usr/share/nginx/html/index.html # ,默认主页
/usr/sbin/nginx
编译安装
#编译安装的文件目录位置是自定义的一般可设置为:
/opt/ngx/conf/nginx.conf
/opt/ngx/logs/access.log
/opt/ngx/html/index.html
/opt/ngx/sbin/nginx
配置文件详解
Nginx的功能,大部分都是通过修改主配置文件nginx.conf和conf.d里面的字配置文件实现的
主配置文件
/etc/nginx/nginx.conf
nginx.conf入口配置文件
user www; # 设置worker的运行用户
worker_processes auto; #是在 Nginx 配置文件中设置工作进程数量的一种方式。具体而言,auto 关键字告诉 Nginx 根据系统的可用 CPU 核心数量自动确定工作进程的数量。
error_log /var/log/nginx/error.log notice; #开启错误日志,notice级别
pid /var/run/nginx.pid; # Nginx 主进程的 PID 将被写入 /var/run/nginx.pid 文件。
events {
worker_connections 1024; #这个配置项用于设置每个 Nginx 工作进程的最大并发连接数
}
http {
include /etc/nginx/mime.types; #定义的 MIME 类型
default_type application/octet-stream; # 定义的 MIME 类型
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
include /etc/nginx/conf.d/*.conf; # include导入该目录下的*.conf配置文件
##优化的一些功能
error_page ...
sendfile on; # 启用 sendfile 可以提高文件传输的效率,特别是在处理大文件时。
#tcp_nopush on; #当启用时,TCP_NOPUSH 选项会告诉内核等待一定量的数据再发送,以减少发送的 TCP 数据包的数量
keepalive_timeout 65;#定义了客户端与服务器之间的持久连接的超时时间,连接在 65 秒内没有活动时将被关闭。
#gzip on; # 当启用时,Nginx 将尝试使用 Gzip 压缩传输给客户端的内容,以减小传输的数据量,提高网络性能。
}
子配置文件
通过子配置文件实现虚拟主机功能:
- 基于IP的方式
- 基于域名的方式
- 基于端口的方式
/etc/nginx/conf.d/test.conf
server {
listen 端口;
#listen 10.0.0.5:81 #这是基于多端口设置虚拟主机
server_name _域名; #这是基于多端口设置虚拟主机
# 支持中文的参数
charset utf-8;
location / {
root /www/huoying/;
# 默认找 /www/huoying/ 的名字叫做index.html的文件
index index.html;
}
}
使用案例
主配置文件无需修改,编辑子配置文件
vim /etc/nginx/conf.d/ts.conf:
server {
listen 80;
server_name _;
charset utf-8;
location / {
root /www/test/;
# 默认找 /www/test/ 的名字叫做index.html的文件
index index.html;
}
}
#检查语法:nginx -t
[root@nginx ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
#创建文件夹
[root@nginx ~]# mkdir -p /www/test/
#修改权限
[root@nginx ~]# chown -R nginx.nginx /www
#创建首页文件
vim /www/test/index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>简单的前端页面测试</title>
</head>
<body>
<h1>欢迎来到我的测试页面</h1>
<p>关注我微信公众号:运维星球</p>
</body>
</html>
重新加载配置文件
[root@nginx ~]# nginx -s reload
访问测试
总结
Nginx是一款高性能的开源Web服务器,可用于反向代理、负载均衡等。安装方式包括编译安装和包管理器安装,常用命令包括启动、停止、重载配置等。配置文件分为主配置文件和子配置文件,可以实现虚拟主机等功能。通过简单的案例演示,可以快速上手使用Nginx搭建Web服务。
关注我:分享更多运维知识