Nginx快速上手

发布于:2025-03-17 ⋅ 阅读:(14) ⋅ 点赞:(0)

什么是nginx

Nginx 是一款开源的高性能 HTTP 和反向代理服务器,同时也提供了 IMAP/POP3/SMTP 代理功能。它由俄罗斯程序员 Igor Sysoev 于2004年首次发布,最初设计目的是为了解决 C10k 问题,即如何让单台服务器同时处理1万个并发连接的问题。

功能和作用

Nginx 主要的功能和作用包括但不限于以下几点:

  1. Web服务器:Nginx 可以作为一个轻量级的 Web 服务器来处理静态文件、索引文件和自动索引等。
  2. 反向代理服务器:作为反向代理,Nginx 可以接收客户端请求并将其转发给后端的一个或多个服务器进行处理,然后将处理结果返回给客户端。这种架构有助于分担后端服务器的负载,提高系统的可用性和性能。
  3. 负载均衡器:Nginx 提供了多种负载均衡算法(如轮询、最少连接、IP哈希等),可以将客户端请求分配到多个后端服务器上,从而实现高可用性和扩展性。
  4. 缓存服务器:Nginx 可以缓存静态内容和动态生成的页面,减少对后端服务器的请求数量,提升网站响应速度。
  5. SSL/TLS 支持:Nginx 支持 SSL/TLS 协议,能够提供 HTTPS 服务,保障数据传输的安全。
  6. 动静分离:Nginx 可以高效地处理静态资源,并将动态请求代理到后端应用服务器,以此加快网站解析速度。
  7. 安全防护:Nginx 提供了一定的安全防护功能,比如通过配置访问控制列表(ACL)限制特定 IP 地址或 IP 段的访问。
  8. 邮件代理服务器:Nginx 还支持 IMAP、POP3 和 SMTP 协议,可用于代理和负载均衡邮件服务器的请求。

历史发展

  • Nginx 最初是由 Igor Sysoev 在2002年开始开发,并于2004年发布了第一个公开版本0.1.0。
  • 由于其出色的性能和稳定性,Nginx 很快获得了广泛的认可,并在全球范围内被大量知名网站采用。
  • 2011年,Igor Sysoev 成立了 NGINX Inc. 公司,专注于提供商业支持和服务。
  • 2019年,NGINX 被美国公司 F5 Networks 以6.7亿美元的价格收购。
  • 在2022年的俄乌冲突背景下,F5 决定暂停在俄罗斯的所有销售活动,并移除俄罗斯对 NGINX 开源项目的贡献权限。

Nginx 的成功在于其采用了事件驱动的异步非阻塞处理模型,这使得它在处理高并发请求时表现出色。此外,Nginx 的模块化设计允许用户根据需要灵活扩展其功能。它的配置文件结构清晰,易于理解和修改,支持丰富的配置选项,便于定制化部署。正因为这些特性,Nginx 已经成为构建高性能 Web 应用程序、负载均衡集群和反向代理的理想选择。

下载nginx?

  1. 访问官方网站:首先,访问 Nginx 的官方网站 nginx.org
  2. 下载 Windows 版本:从官网的下载页面获取 Windows 版本的 Nginx。通常,你会找到一个如 nginx-x.x.xx.zip 的链接(这里的 x.x.xx 是版本号),点击下载这个压缩包。

安装 Nginx

  1. 解压文件:将下载的 .zip 文件解压到你希望安装 Nginx 的目录,例如 C:\nginx\

  2. 启动 Nginx

    • 打开命令提示符(以管理员身份运行),然后导航到 Nginx 的安装目录下的 sbin 文件夹。例如,如果你把 Nginx 解压到了 C:\nginx\,那么你应该执行:

      cd C:\nginx\nginx-1.26.3\  (根据实际解压后的文件夹名称调整路径)
      
    • 然后,输入以下命令来启动 Nginx:

      start nginx
      

      或者直接双击 nginx.exe 来启动它。

  3. 验证安装

    • 打开浏览器,访问 http://localhost/。如果看到欢迎页面,说明 Nginx 已经成功安装并正在运行。

配置环境变量

如果你想在任何地方都能使用 nginx 命令,可以配置环境变量:

  1. 添加到系统环境变量

    • 右键点击“此电脑”或“我的电脑”,选择“属性”。
    • 点击左侧的“高级系统设置”。
    • 在弹出的窗口中,点击“环境变量”按钮。
    • 在“系统变量”部分,找到并选择 Path 变量,然后点击“编辑”。
    • 在编辑窗口中,点击“新建”,然后输入 Nginx 的 sbin 目录路径,例如 C:\nginx\nginx-1.26.3\(确保指向正确的路径)。
    • 确认所有对话框都已保存并关闭。
  2. 验证配置是否成功

    • 打开一个新的命令提示符窗口,输入 nginx -v 来检查是否能够识别 Nginx 命令以及查看其版本信息。

PID?

PID,全称为Process Identifier(进程标识符),是操作系统为了管理和识别运行中的每个进程而分配的一个唯一数字标识符。在任何给定时间点,操作系统中运行的所有进程都有一个唯一的PID值,这使得操作系统能够对这些进程进行管理、监控和控制。

PID的作用

  • 进程管理:通过PID,操作系统可以对特定的进程执行各种操作,比如启动、停止、重启或调整优先级等。
  • 资源分配:操作系统根据PID来跟踪和管理进程使用的系统资源,如内存、CPU时间等。
  • 安全性和权限控制:不同的进程可能运行在不同的用户上下文中,拥有不同的权限级别。通过PID,可以确保只有具有适当权限的用户才能对进程执行某些操作。
  • 日志记录与调试:开发人员和系统管理员可以通过PID追踪某个进程的行为,这对于调试程序和分析性能问题非常有用。

如何查看PID

不同的操作系统提供了不同的工具来查看正在运行的进程及其PID:

  • Linux/macOS: 使用ps命令可以列出所有进程及其PID。例如,要查找Nginx的主进程ID,可以使用以下命令:

    ps aux | grep nginx
    

    或者直接查看Nginx配置文件中指定的PID文件内容(如果有的话):

    cat /var/run/nginx.pid
    
  • Windows: 在任务管理器中可以直接看到每个进程的PID。也可以使用命令行工具tasklist来显示包括PID在内的进程信息:

    tasklist /FI "imagename eq nginx.exe"
    

发送信号给进程

在Unix/Linux系统中,经常需要向特定进程发送信号以触发某些行为(如重新加载配置、优雅地关闭服务等)。这通常通过PID来实现。例如,向Nginx发送重新加载配置的信号:

sudo kill -HUP `cat /var/run/nginx.pid`

服务启停

  • 下面是针对在windows系统中的操作

  • 即使你已经配置了环境变量,当你直接在命令行输入 nginx 命令而没有指定工作目录和配置文件路径时,Nginx 默认会在其认为的当前工作目录下寻找这些文件,这可能是导致错误的原因

基本操作

启动 Nginx

  • 打开命令提示符(推荐以管理员身份运行),导航到 Nginx 的安装目录下,然后执行:

    start nginx
    

    或者直接双击 nginx.exe 文件。

停止 Nginx

  • 要停止 Nginx,可以在命令提示符中输入:

    nginx -s stop
    

重新加载配置(不停机重载)

  • 当你对配置文件进行了更改并希望应用新设置时,可以使用以下命令:

    nginx -s reload
    

检查配置文件语法

  • 在重新加载前,确保配置文件正确无误,可以通过以下命令检查:

    nginx -t
    

查看Nginx进程

在Windows上,你可以使用以下几种方法来查看Nginx的进程信息:

  • 任务管理器:

    • 打开任务管理器(Ctrl + Shift + Esc)。
    • 在“进程”标签页下查找nginx.exe。这里可以看到Nginx的主进程和工作进程。
  • 命令行工具:

    • 使用tasklist命令结合findstr来过滤Nginx相关的进程:

      tasklist /FI "imagename eq nginx.exe"
      
    • 这个命令会列出所有名为nginx.exe的进程及其PID信息。

获取Nginx主进程PID

在Windows版本的Nginx中,默认情况下也会将主进程的PID写入一个文件中。这个文件的位置取决于你的配置文件设置,但通常可以在Nginx安装目录下的logs文件夹中的nginx.pid找到。例如,如果Nginx安装在C:\nginx\目录下,则可以使用以下命令查看主进程PID:

type C:\nginx\logs\nginx.pid

使用nginx -s发送信号

在Windows上,你可以通过nginx -s命令向Nginx发送信号以执行不同的操作,如重新加载配置或停止服务。这包括:

  • reload: 重新加载配置文件,不中断服务。

    nginx -s reload
    
  • stop: 快速关闭Nginx。

    nginx -s stop
    
  • quit: 优雅地关闭Nginx,在处理完当前请求后退出。

    nginx -s quit
    

这些命令需要在命令提示符窗口中执行,并且应该从Nginx的安装目录运行,或者确保你的系统路径包含Nginx的可执行文件路径。在某些情况下,可能需要以管理员身份运行命令提示符来执行这些命令。

注意事项

  • 环境变量:如果已经将 Nginx 的路径添加到了系统的环境变量中,在任意位置都可以直接使用 nginx 命令。否则,请确保你在 Nginx 的安装目录或其 sbin 子目录下执行命令。
  • 权限问题:在 Linux 和 macOS 系统上执行上述命令时,可能需要管理员权限(使用 sudo)。
  • 工作目录:确保你的当前工作目录为 Nginx 的安装目录,特别是当未配置环境变量时,这有助于避免路径相关的问题。

Nginx基础结构

  1. Master进程
    • 作用:Master进程是Nginx的主进程,负责管理其他进程和配置文件的加载。它不直接处理客户端请求,而是负责监听端口、接收新连接,并将连接分配给Worker进程。
    • 特点:Master进程具有特权,通常以root用户身份运行,以便能够绑定到特权端口(如80和443)。
  2. Worker进程
    • 作用:Worker进程是实际处理客户端请求的进程。每个Worker进程都是独立的,可以处理多个客户端请求。
    • 特点:Worker进程通常以非特权用户身份运行,以提高安全性。它们通过事件驱动和异步非阻塞的方式处理请求,能够高效地处理大量并发连接。
  3. Cache Manager进程(可选)
    • 作用:Cache Manager进程负责管理Nginx的缓存。它定期清理和更新缓存,确保缓存的有效性和空间利用率。
  4. Cache Loader进程(可选)
    • 作用:Cache Loader进程在Nginx启动时预加载缓存内容。这有助于减少启动时间,并提高缓存的命中率。
  5. 配置模块
    • 作用:Nginx的配置文件(如nginx.conf)定义了服务器的行为,包括监听的端口、虚拟主机、反向代理设置、负载均衡策略等。
    • 特点:Nginx的配置文件非常灵活,支持模块化扩展,可以根据需要进行定制。
  6. 事件驱动模型
    • 作用:Nginx采用事件驱动模型,通过epoll(在Linux上)或kqueue(在FreeBSD上)等高效的多路复用机制,实现高并发处理。
    • 特点:事件驱动模型使得Nginx能够以少量的资源处理大量的并发连接,减少上下文切换的开销,提高性能。

Nginx配置文件

Nginx配置文件是控制Nginx服务器行为的核心。一个典型的Nginx配置文件(通常命名为nginx.conf)由多个部分组成,每个部分都有其特定的功能和用途。

nginx -V

你可以通过上面指令来查看文件路径,--conf-path=“相对路径”明确指出了配置文件的所在位置

1. 全局块(Global Block)

位于配置文件最外层,定义了影响整个Nginx进程的参数。

  • user:指定Nginx Worker进程运行的用户和用户组,默认为nobody。
  • worker_processes:指定Nginx启动的工作进程数,通常设置为CPU核心数。
  • error_log:定义全局错误日志的位置和级别。
  • pid:指定存储Nginx主进程ID的文件路径。

2. Events 块

配置与事件驱动模型相关的设置。

  • worker_connections:设定每个Worker进程的最大并发连接数。
  • use:选择使用的事件驱动模型,如epoll、kqueue等。

3. HTTP 块

这是Nginx配置中最复杂的部分,包含了处理HTTP请求的所有相关配置。

  • include:引入其他配置文件或目录下的所有配置文件,便于模块化管理。
  • default_type:设置默认的MIME类型。
  • log_formataccess_log:定义访问日志格式及存放位置。
  • sendfile:启用或禁用高效文件传输模式。
  • tcp_nopushtcp_nodelay:优化网络性能的选项。
  • keepalive_timeout:设置保持连接的超时时间。
  • gzip:启用或禁用Gzip压缩以减少传输数据量。

4. Server 块

定义虚拟主机配置,允许你基于不同的域名或IP地址提供不同的服务。

  • listen:指定服务器监听的端口,默认为80。
  • server_name:指定服务器名称,可以是域名或IP地址。
  • root:设置请求的根目录。
  • index:设置默认索引文件名。

5. Location 块

用于匹配不同的URI请求,并对这些请求执行特定的操作。

  • 可以根据不同的匹配方式(精确匹配=, 正则匹配~, 忽略大小写的正则匹配~*, 前缀匹配^~等)来处理请求。
  • 常见操作包括静态文件服务、反向代理等。

6. Upstream 块(如果需要负载均衡)

用于定义一组后端服务器,实现负载均衡。

  • 可以使用轮询(round-robin)、最少连接(least_conn)、IP哈希(ip_hash)等方式进行负载均衡。

7. 其他重要指令

  • proxy_pass:配置反向代理,将客户端请求转发到后端服务器。
  • try_files:按顺序检查指定的文件和路径,找到即停止搜索并处理请求。
  • rewrite:根据规则重写URL,可用于实现URL重定向或优化SEO。
  • return:根据条件返回特定的HTTP状态码。

通过合理配置上述各部分,可以根据具体需求定制Nginx的行为,以满足高性能Web服务的要求。例如,你可以设置静态资源缓存策略、启用SSL/TLS安全连接、配置反向代理以支持动态内容处理等。每种配置都需要仔细考虑其对性能、安全性和维护性的影响。

静态站点的部署

1. 准备静态资源

首先,你需要确保你的静态网站已经构建完成,并且所有的资源文件(HTML, CSS, JavaScript, 图片等)都已准备好。如果你使用的是前端框架或工具(如React, Vue, Hugo等),你可能需要先运行构建命令生成最终的静态资源文件。

2. 配置Nginx

接下来,你需要配置Nginx以正确地服务这些静态文件。这通常涉及到编辑Nginx的配置文件(通常是nginx.conf或者位于sites-available目录下的某个配置文件)。

server {
    listen 80;
    server_name example.com;

    location / {
        root /path/to/your/static/site; # 设置静态文件的根目录
        index index.html; # 默认首页
        try_files $uri $uri/ /index.html; # 对于单页应用(SPA)特别有用
    }

    error_page 404 /404.html;
    location = /404.html {
        root /path/to/your/static/site;
    }
}

在这个配置中,你需要替换example.com为你的域名,并设置正确的root路径指向你静态站点所在的目录。

3. 测试并重新加载Nginx配置

在保存了新的配置后,你应该测试Nginx配置是否有语法错误,并重新加载Nginx使更改生效。可以使用以下命令:

sudo nginx -t # 测试配置文件的正确性
sudo nginx -s reload # 重新加载Nginx配置

4. 上传静态资源

如果静态资源不在服务器上,你需要将它们上传到服务器上的指定目录(即你在Nginx配置中定义的root路径)。你可以使用SCP、FTP或其他文件传输方式来完成这项工作。

5. 访问您的网站

一旦完成上述步骤,理论上你应该可以通过浏览器访问你的静态网站了。只需在地址栏输入你的域名或服务器IP地址即可。

注意事项

  • HTTPS: 考虑为你的静态站点启用HTTPS,这对于保护用户数据和提高搜索引擎排名都有好处。可以考虑使用Let’s Encrypt免费获取SSL证书。
  • 缓存策略: 为了提高性能,你可以设置适当的缓存头来指示浏览器如何缓存你的静态资源。
  • CDN: 使用内容分发网络(CDN)可以帮助加速全球用户的访问速度,同时减少源站的压力。

配置进程数量

在Nginx中配置工作进程的数量是非常重要的,因为它直接影响到服务器的性能和资源利用效率。工作进程负责处理客户端请求,因此合理设置worker_processes的数量可以提高服务器响应速度和吞吐量。

配置方法

Nginx的工作进程数量是在主配置文件(通常是nginx.conf)的全局块中通过worker_processes指令来定义的。以下是几种常见的配置方式:

  1. 根据CPU核心数自动调整
    这是最常用的方式之一,它允许Nginx根据服务器的CPU核心数自动决定最佳的工作进程数。

    worker_processes auto;
    

    使用auto关键字可以让Nginx自动检测并设置为最佳值,这通常等于服务器的CPU核心数。

  2. 手动指定具体数值
    如果你对服务器负载情况非常了解,并且想要手动控制工作进程的数量,可以直接指定一个具体的数字。

    worker_processes 4; # 假设你的服务器有4个CPU核心
    
  3. 基于其他因素调整
    在某些情况下,可能需要考虑除了CPU核心数之外的因素,比如I/O等待时间、网络延迟等。虽然直接与这些因素相关的配置并不多,但你可以通过试验不同的worker_processes设置找到最适合你应用环境的配置。

相关优化建议

  • 结合worker_connections使用:确定了worker_processes后,还需要注意events块中的worker_connections指令,它定义了一个工作进程同时处理的最大连接数。最大并发连接数等于worker_processes乘以worker_connections

    events {
        worker_connections 1024;
    }
    
  • 监控与调优:部署完成后,应该持续监控服务器性能指标(如CPU利用率、内存使用率、请求响应时间等),并根据实际情况进一步微调worker_processes和其他相关参数。

  • 测试配置:每次修改Nginx配置文件后,请记得先进行配置测试,确保没有语法错误:

    sudo nginx -t
    

    然后重新加载Nginx使新的配置生效:

    sudo nginx -s reload
    

反向代理

反向代理是一种常见的网络服务部署模式,特别是在处理Web请求时非常有用。它允许客户端发送请求到一个代理服务器,然后由这个代理服务器将请求转发给后端的实际服务器(可以是一个或多个),并将响应返回给客户端。

配置反向代理的基本步骤

  1. 安装Nginx:确保你的系统上已经安装了Nginx。如果没有,请根据你的操作系统选择合适的安装方法。

  2. 编辑Nginx配置文件:你需要编辑Nginx的主要配置文件(通常是nginx.conf或者位于sites-available目录下的某个配置文件)以添加反向代理设置。

  3. 配置反向代理:使用location块结合proxy_pass指令指定后端服务器的地址。

示例

假设你有一个运行在本地8080端口的应用服务器,并希望使用Nginx作为前端反向代理服务器。

server {
    listen 80; # 监听HTTP请求的80端口
    server_name example.com; # 你的域名

    location / {
        proxy_pass http://127.0.0.1:8080; # 指定后端服务器的地址和端口
        proxy_set_header Host $host; # 将原始请求的Host头部传递给后端服务器
        proxy_set_header X-Real-IP $remote_addr; # 获得原始请求的真实IP地址
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 为代理链路中的每个代理添加客户端IP地址
        proxy_set_header X-Forwarded-Proto $scheme; # 标识客户端请求使用的协议(http或https)
    }
}

负载均衡

在Nginx中配置负载均衡可以帮助你将客户端请求分发到多个后端服务器,从而提高应用的可用性和扩展性。通过负载均衡,不仅可以实现更高的处理能力,还能在后端服务器故障时提供冗余支持,确保服务的连续性。

基本步骤

  1. 定义上游服务器组:首先需要使用upstream指令定义一个包含所有后端服务器的组。
  2. 配置反向代理:然后,在server块中的适当location里使用proxy_pass指令指向这个上游服务器组。

示例配置

假设你有三台后端服务器(backend1.example.com, backend2.example.com, backend3.example.com),你可以按照以下方式配置Nginx:

http {
    upstream backend_servers {
        # 定义一组后端服务器
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;

        # 可选: 使用最少连接策略
        # least_conn;

        # 可选: 为每个服务器设置权重,数值越高,分配到的概率越大
        # server backend1.example.com weight=3;
        # server backend2.example.com weight=2;
        # server backend3.example.com weight=1;
    }

    server {
        listen 80; # 监听HTTP请求的80端口
        server_name example.com; # 你的域名

        location / {
            proxy_pass http://backend_servers; # 将请求转发给上游服务器组
            
            # 设置头部信息以保持会话一致性等
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

负载均衡策略

Nginx支持多种负载均衡算法,默认是轮询(Round Robin)。此外,还可以选择其他几种策略:

  • Least Connections (最小连接):将请求发送到当前连接数最少的服务器上。适用于请求处理时间差异较大的场景。

    least_conn;
    
  • IP Hash (基于客户端IP的哈希):根据客户端IP地址的哈希值来选择服务器,这样来自同一IP的请求总是被路由到同一个后端服务器,有助于保持会话一致性。

    ip_hash;
    
  • Weight (权重):允许为每个服务器指定一个权重值,Nginx会根据权重比例分发请求。

    server backend1.example.com weight=3;
    server backend2.example.com weight=2;
    server backend3.example.com weight=1;
    

健康检查

虽然Nginx本身不直接支持健康检查,但可以通过第三方模块或结合其他工具(如Consul、Zookeeper等)实现。Nginx Plus版本提供了内置的健康检查功能。

配置测试与重新加载

完成配置后,请务必进行配置文件正确性的检查:

sudo nginx -t

如果一切正常,重新加载Nginx使新的配置生效:

sudo nginx -s reload

配置HTTPS

配置HTTPS对于确保网站的安全性至关重要,它通过SSL/TLS协议加密客户端和服务器之间的通信,保护数据的隐私和完整性。在Nginx中配置HTTPS主要涉及获取SSL证书并编辑Nginx配置文件以启用SSL/TLS。

1. 获取SSL证书

你可以从可信的证书颁发机构(CA)购买SSL证书,或者使用Let’s Encrypt等提供免费证书的服务。以下是以Let’s Encrypt为例,如何获取证书:

  • 使用Certbot工具自动获取并安装证书。首先需要根据你的操作系统和Web服务器类型选择合适的Certbot版本。例如,在Ubuntu系统上运行Nginx,可以使用如下命令安装Certbot:

    sudo apt update
    sudo apt install certbot python3-certbot-nginx
    
  • 然后,运行以下命令来获取并安装证书:

    sudo certbot --nginx
    

    按照提示输入你的邮箱地址、同意服务条款,并输入你的域名信息。

2. 配置Nginx支持HTTPS

获取证书后,你需要编辑Nginx的配置文件来启用HTTPS。通常位于/etc/nginx/nginx.conf/etc/nginx/sites-available/default(具体取决于你的系统和配置)。一个基本的HTTPS配置示例如下:

server {
    listen 80; # 监听HTTP请求
    server_name yourdomain.com www.yourdomain.com;
    return 301 https://$host$request_uri; # 将所有HTTP请求重定向到HTTPS
}

server {
    listen 443 ssl; # 监听HTTPS请求
    server_name yourdomain.com www.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; # SSL证书路径
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # 私钥路径

    ssl_protocols TLSv1.2 TLSv1.3; # 只启用安全的TLS协议版本
    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        # 你的其他配置...
    }
}

3. 测试并重新加载Nginx配置

完成上述配置后,先测试配置文件是否有语法错误:

sudo nginx -t

如果测试成功,重新加载Nginx使新的配置生效:

sudo systemctl reload nginx

4. 自动更新证书(针对Let’s Encrypt)

Let’s Encrypt提供的证书有效期为90天,建议设置定期任务(cron job)自动更新证书。Certbot会自动添加一个定时任务来处理这个问题,但你也可以手动检查更新:

sudo certbot renew --dry-run

设置虚拟主机

假设你想在同一台服务器上托管两个不同的网站site1.example.comsite2.example.com

  1. 基于域名的虚拟主机配置

    打开nginx.conf或创建一个新配置文件(如vhosts.conf)并在其中添加如下内容:

    server {
        listen       80;
        server_name  site1.example.com;
    
        location / {
            root   C:/nginx/html/site1; # 注意路径格式使用正斜杠(/)且盘符后也要有斜杠
            index  index.html index.htm;
        }
    }
    
    server {
        listen       80;
        server_name  site2.example.com;
    
        location / {
            root   C:/nginx/html/site2;
            index  index.html index.htm;
        }
    }
    
  2. 确保配置正确:保存对配置文件的修改后,你需要测试配置是否正确。打开命令提示符并输入以下命令:

    nginx -t
    
  3. 重新加载Nginx:如果配置测试成功,可以通过以下命令重新加载Nginx使新的配置生效:

    nginx -s reload
    

注意事项

  • 路径格式:在Windows上配置Nginx时,请注意使用正斜杠(/)而不是反斜杠(\)来指定路径,并且盘符后也需要加上斜杠,例如C:/nginx/html/
  • 防火墙设置:如果你的Windows防火墙启用,默认情况下可能会阻止外部访问80端口(HTTP)。你需要手动配置防火墙规则允许流量通过。
  • DNS解析:为了让你的虚拟主机正常工作,你需要确保你的本地DNS或hosts文件已正确配置。对于开发环境,可以在C:\Windows\System32\drivers\etc\hosts文件中添加相应的域名指向本地IP地址(通常是127.0.0.1)。