如何在Ubuntu上使用Nginx配置多个域

时间:2020-01-09 10:39:01  来源:igfitidea点击:

了解如何在Ubuntu上安装Nginx并将其配置为多个域。

安装Nginx

  • 更新Apt存储库缓存
sudo apt update
  • 安装Nginx
sudo apt install -y nginx
  • 安装后,我们可以检查已安装的版本。
nginx -v

对于Ubuntu 16.04 Xenial Xerus,我们将看到以下内容:

nginx version: nginx/1.10.3 (Ubuntu)

配置第一个域

Nginx的默认配置文件是/etc/nginx/nginx.conf,我们可以自由地将域添加到此配置中。但是,强烈建议不要这样做。不将所有域组合在一个配置中的唯一最大的理由是,它将变得非常笨拙且难以维护。相反,建议为每个域创建单独的配置文件,并将它们放在/ etc / nginx / sites-available目录中。

我们的第一个域名将命名为domain-one.com。因此,让我们创建其配置文件。

创建Web根目录和配置文件

  • 创建根目录以托管我们网站的文件。
sudo mkdir -p /var/www/domain-one.com/public_html
  • 在/ etc / nginx / sites-available下创建Nginx配置文件。为了便于参考,请在域名后命名配置文件。
sudo touch /etc/nginx/sites-available/domain-one.com.conf
  • 在文本编辑器中打开配置文件。在本教程中,我们将使用VI,但是Nano是一个很好的选择。
sudo vi /etc/nginx/sites-available/domain-one.com.conf

配置第一个域

我们的配置文件已创建。现在是时候定义我们的域及其个人设置了。

  • 在文本编辑器中打开配置文件。在我们的示例中,我们使用VI。但是,请随时使用Nano作为替代。
sudo vi /etc/nginx/sites-available/domain-one.com.conf
  • 我们设置服务器指令,并告诉Nginx该配置映射到端口80上与domain-one.com匹配的所有域请求。
server {
     listen 80;
     listen [::]:80;
     server_name domain-one.com www.domain-one.com;
}
  • Nginx需要知道从哪个目录提供内容。当没有指定文件时,我们还想让Nginx知道默认提供哪种文件类型。因此,让我们通过在配置中添加以下几行来定义这些设置。将它们放在服务器大括号之间,在server_name下
root /var/www/domain-one.com/public_html;

index index.html index.htm;
  • 最后,让我们告诉Nginx尝试将请求作为文件提供。如果文件不存在,请尝试建立目录;否则,请尝试创建目录。否则,显示404页面未找到错误。
location / {
     try_files $uri $uri/ =404;
}

此位置指令会将所有请求映射到访问我们域根目录的任何内容。由于还没有其他位置指令,因此所有请求都将映射到它。

  • 现在,配置文件应类似于以下示例。
server {
     listen 80;
     listen [::]:80;
     server_name domain-one.com www.domain-one.com;

     root /var/www/domain-one.com/public_html;

     index index.html index.htm;

     location / {
          try_files $uri $uri/ =404;
     }
}
  • 保存更改并退出文本编辑器。

验证我们的配置并启动Nginx

  • 验证配置文件是否没有语法错误。这是在生产服务器上进行任何工作的好习惯,因为一个简单的语法错误将阻止Nginx服务启动,从而阻止访问者访问站点。
sudo nginx -t -c /etc/nginx/sites-available/domain-one.com.conf
  • 如果未找到错误,请启用该站点。为此,我们需要在启用站点的目录中创建站点配置文件的符号链接。
sudo ln -s /etc/nginx/sites-available/domain-two.com.conf /etc/nginx/sites-enabled/domain-two.com.conf
  • 启动或者重启Nginx服务。
sudo systemctl start nginx

如果Nginx已经在运行,请重新加载所有配置文件而不停止服务。

sudo systemctl reload nginx
  • 验证Nginx是否正在运行。
sudo systemctl status nginx

配置其他域

我们的其他域几乎与添加我们的第一个域相同。唯一的区别是我们需要更改服务器的主机名。可以从同一端口为所有域提供服务,该端口默认使用80。

我们的第二个域名将创造性地命名为domain-two.com。让我们开始进行设置。

创建Web根目录和配置文件

  • 创建目录用作我们的网络根目录。
sudo mkdir -p /var/www/domain-two.com/public_html
  • 创建配置文件。与第一个域名一样,我们将以域名命名。
sudo touch /etc/nginx/sites-available/domain-two.com.conf
  • 配置设置与第一个域完全相同,只是更改域名和根目录。
server {
     listen 80;
     listen [::]:80;
     server_name domain-two.com www.domain-two.com;

     root /var/www/domain-two.com/public_html;

     index index.html index.htm;

     location / {
          try_files $uri $uri/ =404;
     }
}
  • 保存更改并退出文本编辑器。

验证配置并启动Nginx

  • 验证配置文件,检查其语法错误。
sudo nginx -t -c /etc/nginx/sites-available/domain-two.com
  • 如果未找到错误,请启用该站点。为此,我们需要在启用站点的目录中创建站点配置文件的符号链接。
sudo ln -s /etc/nginx/sites-available/domain-two.com.conf /etc/nginx/sites-enabled/domain-two.com.conf
  • 启动或者重启Nginx。
sudo systemctl start nginx

如果Nginx已经在运行,请重新加载配置文件。

sudo systemctl reload nginx
  • 验证Nginx是否正在运行。
sudo systemctl status nginx

测试网域

查看服务是否正在运行以验证一切是否正常。