如何在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
测试网域
查看服务是否正在运行以验证一切是否正常。