如何在 Windows 服务器上用 Nginx 发布多个网站

时间:2024-10-21 07:47:00

在 Windows 服务器上通过 Nginx 发布多个网站非常实用且高效。无论你有多少域名,都可以通过 Nginx 的虚拟主机机制来为每个域名配置独立的网站。本文将详细介绍如何通过 Nginx 实现这一目标,并逐步解释从安装、配置到发布多个站点的过程。

目录:

  1. 准备工作
  2. 安装 Nginx
  3. 配置多个站点的虚拟主机
  4. 创建站点目录并上传内容
  5. 启动或重启 Nginx
  6. 配置 HTTPS(可选)
  7. 总结

准备工作

首先,在开始配置 Nginx 之前,需要完成以下准备工作:

  1. 域名:你需要有多个域名,例如 www.siteA.comwww.siteB.com。如果是测试,你也可以使用本地的 hosts 文件来模拟域名解析。
  2. Windows 服务器:确保你有一台 Windows 服务器,并能访问该服务器的管理权限。

安装 Nginx

  1. 前往 Nginx 官方网站下载适用于 Windows 的版本:Nginx Windows 下载页面
  2. 下载完成后,将其解压到合适的目录,例如 C:\nginx
  3. 解压后,你可以在 C:\nginx 目录中看到 Nginx 的文件和文件夹,包括 conf 目录(存放配置文件)。

配置多个站点的虚拟主机

假设你有两个网站 www.siteA.comwww.siteB.com,我们可以通过 Nginx 的虚拟主机功能,为每个网站配置独立的 server 块。

1. 打开 Nginx 配置文件

配置文件位于 C:\nginx\conf\nginx.conf。用文本编辑器(如 Notepad)打开该文件。

2. 配置 server

nginx.confhttp 块内,为每个域名添加对应的 server 配置。

网站A的配置
server {
    listen 80;
    server_name www.siteA.com;

    root C:/nginx/html/siteA;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}
网站B的配置
server {
    listen 80;
    server_name www.siteB.com;

    root C:/nginx/html/siteB;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}
  • listen 80:监听 HTTP 的默认端口 80。
  • server_name:指定网站的域名。
  • root:指定每个网站的根目录。
  • location /:定义 URL 路径的处理方式。

创建站点目录并上传内容

现在,你需要为每个网站创建目录,并上传各自的网站文件。

  1. 网站A:创建文件夹 C:\nginx\html\siteA\,并放置 index.html 文件。内容可以是:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Site A</title>
    </head>
    <body>
        <h1>Welcome to Site A</h1>
    </body>
    </html>
    
  2. 网站B:同样,创建文件夹 C:\nginx\html\siteB\,并放置 index.html 文件。内容可以是:

    <!DOCTYPE html>
    <html>
    <head>
        <title>Site B</title>
    </head>
    <body>
        <h1>Welcome to Site B</h1>
    </body>
    </html>
    

这样你就为每个网站配置了独立的目录和网页文件,分别显示不同的内容。


启动或重启 Nginx

配置完成后,启动或重启 Nginx 使配置生效。

  1. 打开命令提示符(CMD),切换到 Nginx 安装目录:

    cd C:\nginx
    
  2. 启动 Nginx(如果没有启动):

    start nginx
    
  3. 如果 Nginx 已经在运行,可以使用以下命令重新加载配置:

    nginx -s reload
    

配置 HTTPS(可选)

为了提升安全性,你可以为每个站点配置 HTTPS。

1. 申请 SSL 证书

你可以使用 Let’s Encrypt 免费证书或通过其他证书提供商获取 SSL 证书。通常,你会获得 certificate.crtprivate.key 文件。

2. 配置 HTTPS

将证书文件放在服务器上的合适位置,例如 C:\nginx\ssl\siteA.crtC:\nginx\ssl\siteA.key

网站A的 HTTPS 配置
server {
    listen 443 ssl;
    server_name www.siteA.com;

    ssl_certificate C:/nginx/ssl/siteA.crt;
    ssl_certificate_key C:/nginx/ssl/siteA.key;

    root C:/nginx/html/siteA;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

# 将HTTP重定向到HTTPS
server {
    listen 80;
    server_name www.siteA.com;
    return 301 https://$server_name$request_uri;
}
网站B的 HTTPS 配置
server {
    listen 443 ssl;
    server_name www.siteB.com;

    ssl_certificate C:/nginx/ssl/siteB.crt;
    ssl_certificate_key C:/nginx/ssl/siteB.key;

    root C:/nginx/html/siteB;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

# 将HTTP重定向到HTTPS
server {
    listen 80;
    server_name www.siteB.com;
    return 301 https://$server_name$request_uri;
}

重启 Nginx 后,两个网站就可以通过 HTTPS 安全访问了。


总结

通过 Nginx 在 Windows 服务器上发布多个网站的步骤主要包括:

  1. DNS 解析:确保域名指向你的服务器 IP。
  2. Nginx 配置:为每个网站配置 server 块,指定域名和根目录。
  3. 上传网站文件:将每个网站的文件存放在对应的目录中。
  4. 启动或重启 Nginx:确保 Nginx 加载新的配置。
  5. (可选)配置 HTTPS:为每个网站申请 SSL 证书并配置 HTTPS 访问。

通过这些步骤,你可以轻松地在 Windows 服务器上通过 Nginx 实现多个网站的发布和管理,无论是个人站点还是商业站点,都能高效运行。如果你有自己的域名,确保正确配置 DNS 解析,并根据需求设置 HTTPS,提升站点安全性。