筑基期
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
指定了自定义错误页面的文件存放路径。