如何在nginx里配置多个网站

 如何在nginx里配置多个网站

在 Nginx 中配置多个网站(虚拟主机)非常简单,通常通过创建多个服务器块(server block)来为不同的域名或子域名提供不同的站点服务。每个 server block 对应一个网站配置。下面是详细的步骤:

1. 创建网站目录

首先,你需要为每个网站创建一个目录,并将网站的文件放在其中。例如,假设你有两个网站,分别是 site1.comsite2.com

sudo mkdir -p /var/www/site1.com/public_html
sudo mkdir -p /var/www/site2.com/public_html

然后,可以在每个目录下创建一个 index.html 文件来测试网站是否配置正确:

echo "<h1>Welcome to site1.com</h1>" | sudo tee /var/www/site1.com/html/index.html
echo "<h1>Welcome to site2.com</h1>" | sudo tee /var/www/site2.com/html/index.html

2. 配置 Nginx 服务器块

在 Nginx 中,每个网站配置通常放在 /etc/nginx/sites-available/ 目录下,并通过符号链接链接到 /etc/nginx/sites-enabled/ 目录。这样可以更方便地管理多个网站。

2.1 创建配置文件

首先,进入 Nginx 的配置目录:

cd /etc/nginx/sites-available

然后为每个网站创建一个配置文件。比如,为 site1.com 创建配置文件 site1.com

sudo nano /etc/nginx/sites-available/site1.com

在该文件中添加以下内容:

server {
    listen 80;
    server_name site1.com www.site1.com;

    root /var/www/site1.com/html;
    index index.html;

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

对于 site2.com,创建一个类似的配置文件:

sudo nano /etc/nginx/sites-available/site2.com

在该文件中添加以下内容:

server {
    listen 80;
    server_name site2.com www.site2.com;

    root /var/www/site2.com/html;
    index index.html;

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

2.2 启用站点配置

为了启用这两个配置,我们需要创建符号链接,将它们链接到 /etc/nginx/sites-enabled/ 目录。

sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/

3. 测试 Nginx 配置

在修改 Nginx 配置后,最好先测试配置是否正确:

sudo nginx -t

如果一切正常,应该会显示 syntax is okaytest is successful

广告

4. 重启 Nginx 服务

如果配置文件没有问题,重新加载或重启 Nginx 服务使配置生效:

sudo systemctl reload nginx

或者,如果你更改了主要的 Nginx 配置文件,也可以使用:

sudo systemctl restart nginx

5. 测试网站

现在,你可以在浏览器中访问 http://site1.comhttp://site2.com,并验证两个站点是否能够正常显示它们各自的内容。如果你配置了本地解析,在本地测试时可以通过 curl 或直接在浏览器中输入地址来测试。

6. 配置 SSL(可选)

如果你想为这些网站配置 HTTPS(SSL),你需要为每个站点获取 SSL 证书。你可以使用 Let’s Encrypt 免费提供的证书。以下是配置 SSL 的基本步骤:

6.1 安装 Certbot

首先,安装 Certbot 和 Nginx 插件:

sudo apt install certbot python3-certbot-nginx

6.2 获取 SSL 证书

然后,运行 certbot 来为你的站点自动申请和配置 SSL 证书:

 

sudo certbot --nginx -d site1.com -d www.site1.com
sudo certbot --nginx -d site2.com -d www.site2.com

Certbot 会自动为你的站点配置 SSL,并更新 Nginx 配置文件。

6.3 自动续期

为了确保 SSL 证书能够自动续期,可以设置一个定时任务(Cron job):

 

sudo crontab -e

添加以下行:

0 0,12 * * * certbot renew --quiet

这样 certbot 将每天自动检查并更新证书。

搞定!

 

吴川斌

吴川斌

Leave a Reply