筑基期
1. 什么是 Nginx?它的主要用途是什么?
Nginx 是一款高性能的开源 HTTP 服务器和反向代理服务器,也可以作为邮件代理服务器使用。它以其高并发、高扩展性和低资源占用而著名。
Nginx 的主要用途包括:
静态文件服务:
Nginx可以高效地提供静态内容,如HTML、CSS、JavaScript和图片等。反向代理:将客户端请求转发给后端服务器并返回响应,隐藏后端服务器的信息。
负载均衡:将流量分发给多个后端服务器,提升网站性能和容错能力。
支持 HTTPS:通过
SSL/TLS加密通信,提供HTTPS支持。
2. Nginx 的基本架构是什么样的?它是如何处理请求的?
Nginx 的架构基于 事件驱动模型,能够高效地处理大量并发连接。
主进程(Master Process):负责读取和评估配置文件,启动、关闭和管理工作进程。
工作进程(Worker Processes):实际处理客户端请求。
Nginx 使用 非阻塞 I/O 和 多路复用,每个工作进程可以处理大量并发请求,避免了传统
Web服务器中每个请求一个线程的高开销。
Nginx 处理请求的基本流程:
主进程接收客户端的请求。
根据配置,将请求分发给相应的工作进程。
工作进程处理请求并返回结果。
3. 如何安装 Nginx?如何启动、停止和重启 Nginx 服务?
在 Ubuntu/Debian 上安装 Nginx
sudo apt update
sudo apt install nginx
在 CentOS 上安装 Nginx
sudo yum install nginx
启动、停止和重启 Nginx
启动 Nginx:
sudo systemctl start nginx停止 Nginx:
sudo systemctl stop nginx重启 Nginx:
sudo systemctl restart nginx重新加载配置(无中断重启):
sudo systemctl reload nginx
4. Nginx 的配置文件结构是什么样的?如何定义服务器块(server block)?
Nginx 的配置文件通常位于 /etc/nginx/nginx.conf。
它由多个指令组成,配置分为以下几个主要部分:
全局块:影响整个
Nginx服务器的配置,比如用户、工作进程数、日志等。http 块:用于
HTTP服务配置,比如连接超时、压缩设置等。server 块:定义虚拟主机,包含特定域名的配置。
location 块:定义处理特定
URL请求的规则。
server 块的示例:
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
}
listen 80表示监听 80 端口。server_name指定了域名example.com。location /块用于处理根路径/的请求,将其映射到/var/www/html目录。
5. Nginx 中的反向代理(Reverse Proxy)是什么?它的作用是什么?
反向代理 是 Nginx 的一种常见应用,它将客户端的请求转发给后端服务器处理,然后将后端服务器的响应返回给客户端。
反向代理的作用
隐藏后端服务器:客户端无法直接访问后端服务器,增强了安全性。
负载均衡:可以将请求分发给多个后端服务器,分担负载,提升性能。
缓存加速:通过缓存后端服务器的响应,减少后端服务器的负载和响应时间。
反向代理配置示例
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
}
}
当客户端访问 example.com 时,Nginx 将请求转发给后端服务器 http://backend_server,并将响应返回给客户端。
6. 如何在 Nginx 中配置静态文件的服务?
Nginx 可以直接提供静态文件服务,如 HTML、CSS、JavaScript、图片等文件,通常用于简单的网站托管。
配置静态文件服务的示例
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html index.htm;
}
location /images/ {
root /var/www/data;
}
}
root /var/www/html:指定了根目录为/var/www/html,所有请求将从该目录中查找文件。index index.html:指定默认的主页文件为index.html或index.htm。location /images/:为/images/路径指定了不同的文件存储目录/var/www/data。
当用户访问 example.com 时,Nginx 会在 /var/www/html 目录下查找请求的静态文件并返回。
7. 如何在 Nginx 中设置自定义 404 错误页面?
可以通过 Nginx 的 error_page 指令设置自定义的错误页面,如 404 页面。
配置自定义 404 页面示例
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index index.html;
}
error_page 404 /custom_404.html;
location = /custom_404.html {
root /var/www/errors;
}
}
当客户端请求不存在的页面时,Nginx 会返回
404错误,并显示自定义的custom_404.html页面。root /var/www/errors指定了自定义错误页面的文件存放路径。