如何在 CentOS 8 上设置 nginx 服务器块(虚拟主机)
服务器块是 Nginx 指令,用于定义独立网站的设置,从而使您可以在一台服务器上运行多个网站。对于每个网站,您可以设置站点文档根目录(包含网站文件的目录),创建单独的安全策略,使用不同的 SSL 证书等等。
本文介绍如何在 CentOS 8 上设置 Nginx 服务器块。
先决条件
在继续本教程之前,请确保满足以下要求:
- 指向您的公共服务器 IP 的域名。
- 在您的 CentOS系统上安装了 Nginx 。
- 您以 root 用户或具有 sudo 特权的用户身份登录。
在某些文档中,该术语 Server Blocks
称为 Virtual host
。虚拟主机(Virtual host)是 Apache 术语。
创建目录结构
文档根目录是用于存储域名网站文件并响应请求提供服务的目录。可以将文档根目录设置为所需的任何位置。
我们将使用以下目录结构:
/var/www/
├── example.com
│ └── public_html
├── example2.com
│ └── public_html
├── example3.com
│ └── public_html
对于将在服务器上托管的每个网站,我们将在中创建一个单独的目录 /var/www
。在网站目录中,我们将创建一个 public_html
目录,该目录将成为网站文档的根目录,并将存储网站文件。
让我们从创建网站的根目录开始 example.com
:
sudo mkdir -p /var/www/example.com/public_html
为了进行测试,请在网站的文档根目录内创建一个 index.html
文件:
sudo nano /var/www/example.com/public_html/index.html
将以下代码复制并粘贴到文件中:
/var/www/example.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html>
为了避免任何权限问题,请更改网站文档根目录所有权用户为 nginx
:
sudo chown -R nginx: /var/www/example.com
创建服务器块
在 CentOS 上,默认情况下, Nginx 服务器块配置文件必须以 .conf
结尾并存储在 /etc/nginx/conf.d
目录中。
打开文本编辑器并为网站创建配置文件:
sudo nano /etc/nginx/conf.d/example.com.conf
可以将配置文件命名为任意名称,但是通常最好使用域名。
将以下代码复制并粘贴到文件中:
/etc/nginx/conf.d/example.com.conf
server {
listen 80;
listen [::]:80;
root /var/www/example.com/public_html;
index index.html;
server_name example.com www.example.com;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location/{
try_files $uri $uri/ =404;
}
}
保存文件并检查 Nginx 配置是否存在语法错误:
sudo nginx -t
如果没有错误,输出将如下所示:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重新启动 Nginx 服务,以使更改生效:
sudo systemctl restart nginx
最后,要验证服务器块是否按预期工作,请在您选择的浏览器中打开 http://example.com
,您将看到类似以下内容:
结论
我们已经向您展示了如何创建 Nginx 服务器块并在一台 CentOS 服务器上托管多个网站。您可以重复上述步骤,并为所有网站创建其他服务器块。
如果要使用 SSL 证书保护网站的安全,可以生成并安装免费的 Let’s encrypt SSL 证书。