Nginx 配置实例-配置虚拟主机
配置基于域名的虚拟主机
以下步骤将配置三个域名不同的虚拟主机,各虚拟主机规划如下:
- 域名为 aaa.domain.com 的虚拟主机,处理所有对域名 aaa.domain.com 的访问
- 域名为 bbb.otherdomain.com 的虚拟主机,处理所有对域名 bbb.otherdomain.com 的访问
1. 配置域名为 aaa.domain.com 的虚拟主机
1.1 nginx 中虚拟主机的配置
修改 nginx 的配置文件 nginx.conf,将 http 模块内容修改如下:
http {
# 虚拟主机 aaa.domain.com
server {
# 监听的 IP 和端口
listen 80;
# 虚拟主机名
server_name aaa.domain.com;
# 日志
access_log /var/log/nginx/domain-aaa-access.log combined;
location / {
# 首页
index index.html index.htm;
# HTML 网页文件的根目录
root /html/nginx/domain-aaa;
}
}
}
1.2 相关目录及文件的创建
在上面的配置文件中,配置了两个相关的目录,一个是 access_log 配置的日志目录,另一个是 root 配置的网页文件的根目录,分别创建如下两个目录:
# 创建 nginx.conf 配置文件中 access_log 配置的日志目录
cd /var/log/
mkdir nginx
# 创建 nginx.conf 配置文件中 root 配置的网页文件的根目录
mkdir -vp /html/nginx/domain-aaa
创建完成 /html/nginx/domain-aaa 目录后,需向该目录添加 html 文件,充当默认首页
# 拷贝 nginx 的默认首页到 domain-aaa 目录,充当 aaa.domain.com 主机的默认首页
cp -vr /usr/local/nginx/html/* /html/nginx/domain-aaa
修改 index.html 文件,修改内容如下:
1.3 验证域名为 aaa.domain.com 的虚拟主机配置是否成功
在修改 nginx 的配置文件之后,需要进行重载:
# 验证 nginx 的配置文件是否正确
/usr/local/nginx/sbin/nginx -t
# 重启 nginx(只有一个 server 时需要使用重启)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
# 重载 nginx(多于一个 server 时可以使用重载)
/usr/local/nginx/sbin/nginx -s reload
要想通过域名正确访问 aaa.domain.com,还需配置域名和IP的映射关系,修改本机的 hosts 文件,添加如下内容:
192.168.25.101 aaa.domain.com
浏览器访问 aaa.domain.com,将会出现默认首页,页面内容如下:
2. 配置域名为 bbb.otherdomain.com 的虚拟主机
2.1 nginx 中虚拟主机的配置
修改 nginx 的配置文件 nginx.conf,将 http 模块内容修改如下:
http {
# 虚拟主机 aaa.domain.com
server {
# 监听的 IP 和端口
listen 80;
# 虚拟主机名
server_name aaa.domain.com;
# 日志
access_log /var/log/nginx/domain-aaa-access.log combined;
location / {
# 首页
index index.html index.htm;
# HTML 网页文件的根目录
root /html/nginx/domain-aaa;
}
}
# 虚拟主机 bbb.otherdomain.com
server {
# 监听的 IP 和端口
listen 80;
# 虚拟主机名
server_name bbb.otherdomain.com;
# 日志
access_log /var/log/nginx/domain-bbb-access.log combined;
location / {
# 首页
index index.html index.htm;
# HTML 网页文件的根目录
root /html/nginx/domain-bbb;
}
}
}
2.2 相关目录及文件的创建
在上面的配置文件中,配置了两个相关的目录,一个是 access_log 配置的日志目录,另一个是 root 配置的网页文件的根目录,分别创建如下两个目录:
# 创建 nginx.conf 配置文件中 access_log 配置的日志目录
cd /var/log/
mkdir nginx
# 创建 nginx.conf 配置文件中 root 配置的网页文件的根目录
mkdir -vp /html/nginx/domain-bbb
创建完成 /html/nginx/domain-bbb 目录后,需向该目录添加 html 文件,充当默认首页
# 拷贝 nginx 的默认首页到 domain-bbb 目录,充当 bbb.otherdomain.com 主机的默认首页
cp -vr /usr/local/nginx/html/* /html/nginx/domain-bbb
修改 index.html 文件,修改内容如下:
2.3 验证域名为 bbb.otherdomain.com 的虚拟主机配置是否成功
在修改 nginx 的配置文件之后,需要进行重载:
# 验证 nginx 的配置文件是否正确
/usr/local/nginx/sbin/nginx -t
# 重启 nginx(只有一个 server 时需要使用重启)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
# 重载 nginx(多于一个 server 时可以使用重载)
/usr/local/nginx/sbin/nginx -s reload
要想通过域名正确访问 aaa.domain.com,还需配置域名和IP的映射关系,修改本机的 hosts 文件,添加如下内容:
192.168.25.101 bbb.otherdomain.com
浏览器访问 bbb.otherdomain.com,将会出现默认首页,页面内容如下:
参考文档
《实战Nginx-取代Apache的高性能Web服务器》3.2.3 配置基于域名的虚拟主机
配置基于 IP 的虚拟主机
以下步骤将配置三个 IP 不同的虚拟主机,各虚拟主机规划如下:
- IP 为 192.168.25.101 的虚拟主机——真实主机
- IP 为 192.168.25.199 的虚拟主机——通过为网卡添加 IP 别名创建的虚拟主机
- IP 为 192.169.25.200 的虚拟主机——通过为网卡添加 IP 别名创建的虚拟主机
1. 配置 IP 为 192.168.25.101 的虚拟主机
1.1 nginx 中虚拟主机的配置
修改 nginx 的配置文件 nginx.conf,将 http 模块内容修改如下:
http {
# 虚拟主机 192.168.25.101
server {
# 监听的 IP 和端口
listen 192.168.25.101:80;
# 虚拟主机名
server_name 192.168.25.101;
# 日志
access_log /var/log/nginx/101-access.log combined;
location / {
# 首页
index index.html index.htm;
# HTML 网页文件的根目录
root /html/nginx/101;
}
}
}
1.2 相关目录及文件的创建
在上面的配置文件中,配置了两个相关的目录,一个是 access_log 配置的日志目录,另一个是 root 配置的网页文件的根目录,分别创建如下两个目录:
# 创建 nginx.conf 配置文件中 access_log 配置的日志目录
cd /var/log/
mkdir nginx
# 创建 nginx.conf 配置文件中 root 配置的网页文件的根目录
mkdir -vp /html/nginx/101
创建完成 /html/nginx/101 目录后,需向该目录添加 html 文件,充当默认首页
# 拷贝 nginx 的默认首页到 101 目录,充当 192.168.25.101 主机的默认首页
cp -vr /usr/local/nginx/html/* /html/nginx/101
修改 index.html 文件,修改内容如下:
1.3 验证 192.168.25.101 的虚拟主机配置是否成功
在修改 nginx 的配置文件之后,需要进行重载:
# 验证 nginx 的配置文件是否正确
/usr/local/nginx/sbin/nginx -t
# 重启 nginx(只有一个 server 时需要使用重启)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
# 重载 nginx(多于一个 server 时可以使用重载)
/usr/local/nginx/sbin/nginx -s reload
浏览器访问 192.168.25.101,将会出现 101 主机的默认首页,页面内容如下:
2. 配置 IP 为 192.168.25.199 的虚拟主机
2.1 192.168.25.199 虚拟主机的模拟
这里虚拟主机的模拟,主要是通过给网卡取 IP 别名来完成的。
- 使用 ifconfig 命令查看当前主机的网卡和 IP
- 在 eth0 网卡上添加 192.168.25.199 的 IP 别名
/sbin/ifconfig eth0:1 192.168.25.199 broadcast 192.168.25.255 netmask 255.255.255.0 up
/sbin/route add -host 192.168.25.199 dev eth0:1
- 验证 eth0 的 IP 别名 192.168.25.199 添加是否成功
使用 ifconifg 命令查看 IP 相关信息
使用 ping 命令查看 192.168.25.199 的 IP 是否可以连接
2.2 nginx 中虚拟主机的配置
修改 nginx 的配置文件 nginx.conf,修改 http 模块内容如下:
http {
# 虚拟主机 192.168.25.101
server {
# 监听的 IP 和端口
listen 192.168.25.101:80;
# 虚拟主机名
server_name 192.168.25.101;
# 日志
access_log /var/log/nginx/101-access.log combined;
location / {
# 首页
index index.html index.htm;
# HTML 网页文件的根目录
root /html/nginx/101;
}
}
# 虚拟主机 192.168.25.199
server {
# 监听的 IP 和端口
listen 192.168.25.199:80;
# 虚拟主机名
server_name 192.168.25.199;
# 日志
access_log /var/log/nginx/199-access.log combined;
location / {
# 首页
index index.html index.htm;
# HTML 网页文件的根目录
root /html/nginx/199;
}
}
}
2.3 相关目录及文件的创建
在上面的配置文件中,配置了两个相关的目录,一个是 access_log 配置的日志目录,另一个是 root 配置的网页文件的根目录,分别创建如下两个目录:
# 创建 nginx.conf 配置文件中 access_log 配置的日志目录
cd /var/log/
mkdir nginx
# 创建 nginx.conf 配置文件中 root 配置的网页文件的根目录
mkdir -vp /html/nginx/199
创建完成 /html/nginx/199 目录后,需向该目录添加 html 文件,充当默认首页
# 拷贝 nginx 的默认首页到 199 目录,充当 192.168.25.199 主机的默认首页
cp -vr /usr/local/nginx/html/* /html/nginx/199
修改 index.html 文件,修改内容如下:
2.4 验证 192.168.25.199 的虚拟主机配置是否成功
在修改 nginx 的配置文件之后,需要进行重载:
# 验证 nginx 的配置文件是否正确
/usr/local/nginx/sbin/nginx -t
# 重启 nginx(只有一个 server 时需要使用重启)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
# 重载 nginx(多于一个 server 时可以使用重载)
/usr/local/nginx/sbin/nginx -s reload
浏览器访问 192.168.25.199,将会出现 199 主机的默认首页,页面内容如下:
3. 配置 IP 为 192.168.25.200 的虚拟主机
3.1 192.168.25.200 虚拟主机的模拟
这里虚拟主机的模拟,主要是通过给网卡取 IP 别名来完成的。
- 使用 ifconfig 命令查看当前主机的网卡和 IP
- 在 eth0 网卡上添加 192.168.25.200 的 IP 别名
/sbin/ifconfig eth0:2 192.168.25.200 broadcast 192.168.25.255 netmask 255.255.255.0 up
/sbin/route add -host 192.168.25.200 dev eth0:2
- 验证 eth0 的 IP 别名 192.168.25.200 添加是否成功
使用 ifconifg 命令查看 IP 相关信息
使用 ping 命令查看 192.168.25.199 的 IP 是否可以连接
3.2 nginx 中虚拟主机的配置
修改 nginx 的配置文件 nginx.conf,修改 http 模块内容如下:
http {
# 虚拟主机 192.168.25.101
server {
# 监听的 IP 和端口
listen 192.168.25.101:80;
# 虚拟主机名
server_name 192.168.25.101;
# 日志
access_log /var/log/nginx/101-access.log combined;
location / {
# 首页
index index.html index.htm;
# HTML 网页文件的根目录
root /html/nginx/101;
}
}
# 虚拟主机 192.168.25.199
server {
# 监听的 IP 和端口
listen 192.168.25.199:80;
# 虚拟主机名
server_name 192.168.25.199;
# 日志
access_log /var/log/nginx/199-access.log combined;
location / {
# 首页
index index.html index.htm;
# HTML 网页文件的根目录
root /html/nginx/199;
}
}
# 虚拟主机 192.168.25.200
server {
# 监听的 IP 和端口
listen 192.168.25.200:80;
# 虚拟主机名
server_name 192.168.25.200;
# 日志
access_log /var/log/nginx/200-access.log combined;
location / {
# 首页
index index.html index.htm;
# HTML 网页文件的根目录
root /html/nginx/200;
}
}
}
3.3 相关目录及文件的创建
在上面的配置文件中,配置了两个相关的目录,一个是 access_log 配置的日志目录,另一个是 root 配置的网页文件的根目录,分别创建如下两个目录:
# 创建 nginx.conf 配置文件中 access_log 配置的日志目录
cd /var/log/
mkdir nginx
# 创建 nginx.conf 配置文件中 root 配置的网页文件的根目录
mkdir -vp /html/nginx/200
创建完成 /html/nginx/200 目录后,需向该目录添加 html 文件,充当默认首页
# 拷贝 nginx 的默认首页到 200 目录,充当 192.168.25.200 主机的默认首页
cp -vr /usr/local/nginx/html/* /html/nginx/200
修改 index.html 文件,修改内容如下:
3.4 验证 192.168.25.200 的虚拟主机配置是否成功
在修改 nginx 的配置文件之后,需要进行重载:
# 验证 nginx 的配置文件是否正确
/usr/local/nginx/sbin/nginx -t
# 重启 nginx(只有一个 server 时需要使用重启)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
# 重载 nginx(多于一个 server 时可以使用重载)
/usr/local/nginx/sbin/nginx -s reload
浏览器访问 192.168.25.199,将会出现 199 主机的默认首页,页面内容如下:
参考文档
《实战Nginx-取代Apache的高性能Web服务器》3.2.2 配置基于IP的虚拟主机