nginx 配置多域名多站点 Ubuntu
一、安装 nginx
apt install nginx
二、配置文件说明
nginx 的配置文件在 /etc/nginx
目录下,它的默认内容是这样的
root@2bd0:/etc/nginx# ll
total 72
drwxr-xr-x 8 root root 4096 Jul 31 15:21 ./
drwxr-xr-x 104 root root 4096 Aug 1 09:54 ../
drwxr-xr-x 2 root root 4096 Nov 10 2022 conf.d/
-rw-r--r-- 1 root root 1077 Feb 4 2019 fastcgi.conf
-rw-r--r-- 1 root root 1007 Feb 4 2019 fastcgi_params
-rw-r--r-- 1 root root 2837 Feb 4 2019 koi-utf
-rw-r--r-- 1 root root 2223 Feb 4 2019 koi-win
-rw-r--r-- 1 root root 3957 Feb 4 2019 mime.types
drwxr-xr-x 2 root root 4096 Nov 10 2022 modules-available/ #
drwxr-xr-x 2 root root 4096 Jul 31 15:21 modules-enabled/
-rw-r--r-- 1 root root 1490 Feb 4 2019 nginx.conf
# 默认 配置文件,一般不需要修改这个文件,为了方便管理,它会包含下面 sites-enabled 内的所有内容
-rw-r--r-- 1 root root 180 Feb 4 2019 proxy_params
-rw-r--r-- 1 root root 636 Feb 4 2019 scgi_params
drwxr-xr-x 2 root root 4096 Aug 1 09:06 sites-available/
# 所有可用的站点配置文件,启用和未启用的一般都放这里面,看名字就知道什么意思
drwxr-xr-x 2 root root 4096 Aug 1 09:07 sites-enabled/
# 所有已启用的都在这个文件夹中,一般是一些链接文件
drwxr-xr-x 2 root root 4096 Jul 31 15:21 snippets/
-rw-r--r-- 1 root root 664 Feb 4 2019 uwsgi_params
-rw-r--r-- 1 root root 3071 Feb 4 2019 win-utf
三、配置多域名多站点
讲一下如何一个服务器配置多域名多站点。
多站点的实现方式有几种:
- 多域名、多站点
- 多端口、多站点
比如 a.com
b.com
都指向了服务器 1.2.3.4
,我们需要实现的是在访问这两个域名的时候出现的是不同的网站,他们都服务在 80 端口,也就是说不需要像 a.com:8080
b.com:8081
这样访问,而直接是 a.com
访问时出现一个网站,b.com
访问时出现另一个网站。
nginx 的默认网站文件在 /var/www/html
文件夹中,一般没有特殊要求不需要修改,直接把文件放到这个目录中使用就好。
1. 创建站点配置文件
在 /etc/nginx/sites-available
文件夹中添加一个 a.com
的文件
cd /etc/nginx/sites-available
vi a.com
添加以下内容:
server {
listen 80; # 监听 80 端口,但只有用 a.com 访问的时候才会匹配到这个配置
server_name a.com; # 这里是 a.com 的域名
root /var/www/html/a.com; # 这里是 a.com 的根目录
index index.html index.htm;
}
同理 b.com
也一样
此时, sites-available
中已经两个文件
a.com
b.com
2. 启用站点配置文件
有个知识点需要说明一下。当你查看 nginx.conf
的时候,能看到这么一句,如下图。
意思是包含 site-enabled/
下面的所有配置
上面我们已经在 sites-available
目录中创建了两个网站。现在我们需要在 sites-enabled
文件夹中创建这两个配置文件的链接文件,链接文件的意思跟 Windows 桌面中的快捷方式差不多,就是个链接。但使用的时候跟使用源文件一样。
cd /etc/nginx/sites-enabled
ln -s ../sites-available/a.com a.com
ln -s ../sites-available/b.com b.com
这样就会在 sites-enabled
文件夹中创建了两个链接文件。这样就相当于 sites-enabled
目录中有了两个跟 sites-available
目录一模一样的文件
像这样
3. 重启 nginx 使其生效
systemctl restart nginx
四、完活
这样在访问 a.com
的时候就是访问服务器上的 /var/www/html/a.com/
目录下的内容
这样在访问 b.com
的时候就是访问服务器上的 /var/www/html/b.com/
目录下的内容