筑基期

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

results matching ""

    No results matching ""