nginx
- 安装使用
- 配置静态web服务器
Nginx是一个高性能的Web服务器和反向代理服务器,它最初是为了处理大量并发连接而设计的。Nginx还可以用作负载均衡器、邮件代理服务器和HTTP缓存。它以其轻量级、稳定性和高吞吐量而闻名,广泛用于大型网站和应用中
-
Nginx的核心功能:
- 静态文件服务:Nginx能够高效地提供静态内容,比如HTML文件、图像和CSS/JS文件。
- 反向代理:Nginx可以作为反向代理服务器,将客户端请求转发到后端服务器,并将后端服务器的响应返回给客户端。它还支持负载均衡。
- 负载均衡:Nginx支持多种负载均衡算法,如轮询(Round-robin)、最小连接(Least Connections)和IP哈希(IP Hash)。
- HTTP缓存:Nginx可以缓存后端服务器的响应,减少服务器的压力并加快响应速度。
- SSL/TLS终结:Nginx能够处理HTTPS请求,通过SSL/TLS加密保护数据传输。
-
Nginx的架构特点:
- 事件驱动架构:与传统的进程/线程模型不同,Nginx使用异步、事件驱动架构,能够处理成千上万的并发连接而占用的资源很少。
- 模块化设计:Nginx支持多种模块,例如HTTP模块、Mail模块等。你可以通过配置启用或禁用不同的功能。
- 高并发:Nginx可以轻松处理数十万并发连接,适合大规模、高流量的场景。
Nginx的基本配置:
Nginx的配置文件通常位于 /etc/nginx/nginx.conf,这是主配置文件。配置文件通过块和指令来定义行为。常见的配置块包括:
http{}:配置HTTP服务的全局设置,如日志格式、默认字符集等。
server{}:每个server块定义一个虚拟主机(virtual host),包括域名、监听端口、站点根目录等。
location{}:location块用于匹配和处理特定的URL请求路径,可以指定不同的处理方式,比如静态文件的存放位置、反向代理设置等。
配置目录说明
- /etc/nginx/nginx.conf:主配置文件,Nginx全局设置。
- /etc/nginx/sites-available/:存放站点(虚拟主机)的配置文件。
- /etc/nginx/sites-enabled/:存放启用的站点配置文件的符号链接。
- /etc/nginx/conf.d/:存放全局的自定义配置文件。
- /etc/nginx/snippets/:存放可复用的配置片段。
- /var/log/nginx/:存放Nginx的日志文件。
- /etc/nginx/mime.types:定义MIME类型映射的文件。
- /etc/nginx/modules-enabled/:存放启用的Nginx动态模块配置文件。
安装使用
nginx命令手册
启动Nginx服务:
sudo systemctl start nginx
停止Nginx服务:
sudo systemctl stop nginx
完全重启Nginx服务,这会关闭并重新启动所有Nginx进程:
sudo systemctl restart nginx
修改了Nginx的配置文件后,可以通过重新加载来应用新的配置,而无需中断服务:
sudo systemctl reload nginx
在重新加载或重启Nginx之前,可以通过以下命令检查配置文件是否有语法错误:
sudo nginx -t
查看Nginx服务的运行状态:
sudo systemctl status nginx
确保Nginx在系统启动时自动运行:
sudo systemctl enable nginx
禁用Nginx的开机自启动:
sudo systemctl disable nginx
如果日志文件被移动或清除,重新打开日志文件:
sudo nginx -s reopen
优雅停止Nginx,允许当前处理的请求完成后再停止服务:
sudo nginx -s quit
强制立即停止Nginx,不等待请求完成:
sudo nginx -s stop
查看当前安装的Nginx版本:
nginx -v
配置静态web服务器
Ubuntu2404环境下安装使用
apt install -y nginx
开机自启动
systemctl enable --now nginx
创建静态文件目录
mkdir -p /var/www/html
创建一个简单的HTML文件
vi /var/www/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Nginx</title>
</head>
<body>
<h1>Hello, this is a static file served by Nginx!</h1>
</body>
</html>
编辑Nginx配置文件;Nginx监听80端口,根路径指向 /var/www/html 目录中的文件。当访问localhost时,Nginx会返回/var/www/html目录下的 index.html 文件
vi /etc/nginx/sites-available/default
server {
listen 80;
server_name localhost;
location / {
root /var/www/html;
index index.html;
}
# 配置一个日志目录(可选)
access_log /var/log/nginx/static_access.log;
error_log /var/log/nginx/static_error.log;
}
配置参数详解
-
server 块
server 块用于定义一个虚拟主机的配置。一个Nginx实例可以包含多个 server 块,每个块处理不同的域名或不同的请求。 -
listen 指令
定义Nginx监听的IP地址和端口号。
listen 80 default_server;: 监听IPv4的80端口,并将此服务器块设为默认服务器。当没有其他服务器块匹配请求时,默认服务器将处理请求。 -
root 指令
指定网站的根目录,即Nginx提供静态文件的基础路径。所有相对路径的文件请求将基于这个目录进行查找 -
index 指令
定义默认的首页文件。当用户访问网站根目录或目录时,Nginx会按顺序查找这些文件并返回第一个存在的文件 -
server_name 指令
指定此服务器块响应的域名或主机名。
_: 通配符,表示所有未被其他 server 块匹配的请求都会由此处理。常用于默认服务器。 -
location 块
定义如何处理特定的URI请求。可以基于路径、正则表达式等进行匹配和处理
location / { … }: 匹配所有以 / 开头的请求,即所有请求。
try_files $uri $uri/ =404;: 尝试按顺序查找请求的文件:
$uri: 请求的URI对应的文件。
$uri/: 请求的URI对应的目录。
=404: 如果前两者都不存在,返回404错误。
检查Nginx配置是否正确
root@huhy:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重新加载Nginx
sudo systemctl reload nginx
界面访问