Nginx 支持的虚拟主机有三种
●基于域名的虚拟主机
●基于 IP 的虚拟主机
●基于端口的虚拟主机
每一种虚拟主机均可通过 "server{}" 配置段实现各自的功能
基于域名的虚拟主机
实验环境
1. 基础源码包 (无密码): https://pan.baidu.com/s/14WvcmNMC6CFX1SnjHxE7JQ
| 主机 IP | 域名 |
---|---|---|
192.168.235.158 | www.kgc.com,www.accp.com |
实验步骤
一, 编译安装 Nginx 服务
第一步: 远程获取 Windows 上的源码包, 并挂载到 Linux 上
- [[email protected] ~]# smbclient -L //192.168.235.1
- Enter SAMBA\root's password:
- Sharename Type Comment
- --------- ---- -------
- LNMP Disk
- [[email protected] ~]# mkdir /abc
- [[email protected] ~]# mount.cifs //192.168.235.1/LNMP /abc
- Password for [email protected]//192.168.235.1/LNMP:
- [[email protected] ~]# ls /abc
- Discuz_X3.4_SC_UTF8.zip nginx-1.12.0.tar.gz PHP-7.1.10.tar.bz2
- MySQL-boost-5.7.20.tar.gz nginx-1.12.2.tar.gz PHP-7.1.20.tar.gz
第二步: 解压源码包
- [[email protected] ~]# cd /abc
- [[email protected] abc]# tar zxvf nginx-1.12.0.tar.gz -C /opt
- [[email protected] abc]# ls /opt
- nginx-1.12.0 rh
第三步: 下载安装编译组件包
- [[email protected] abc]# cd /opt
- [[email protected] opt]# yum install -y> gcc \ //C 语言
- > gcc-c++ \ //c++ 语言
- > pcre-devel \ //pcre 语言工具
- > zlib-devel // 压缩函数库
第四步: 创建程序用户并配置 Nginx 服务相关组件
- [[email protected] opt]# useradd -M -s /sbin/nologin nginx
- // 创建程序用户 nginx, 并限定其不可登录终端
- [[email protected] opt]# cd nginx-1.12.0/
- [[email protected] nginx-1.12.0]# ./configure \
- // 配置 nginx
- > --prefix=//usr/local/nginx \
- // 指定安装路径
- > --user=nginx // 指定用户名
- > --group=nginx // 指定用户所属组
- > --with-http_stub_status_module
- // 安装状态统计模块
第五步: 编译与安装 Nginx
[[email protected] nginx-1.12.0]# make && make install
第六步: 优化 Nginx 服务启动脚本, 并建立命令软连接
- [[email protected] nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
- // 创建 nginx 服务命令软链接到系统命令
- [[email protected] nginx-1.12.0]# systemctl stop firewalld.service
- // 关闭防火墙
- [[email protected] nginx-1.12.0]# setenforce 0
- // 关闭增强型安全功能
- [[email protected] nginx-1.12.0]# nginx
- // 输入 nginx 开启服务
- [[email protected] nginx-1.12.0]# netstat -ntap | grep 80 // 查看服务的 80 端口, 显示已开启
- tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 7520/nginx: master
二, 配置 DNS 域名解析服务
- [[email protected] ~]# yum -y install bind
- // 安装 DNS 服务的 bind 包
- [[email protected] ~]# VIM /etc/named.conf
- // 编辑主配置文件
- options {
- listen-on port 53 { any; };
- ## 将监听地址 127.0.0.1 替换为 any,
- listen-on-v6 port 53 { ::1; };
- directory "/var/named";
- dump-file "/var/named/data/cache_dump.db";
- statistics-file "/var/named/data/named_stats.txt";
- memstatistics-file "/var/named/data/named_mem_stats.txt";
- recursing-file "/var/named/data/named.recursing";
- secroots-file "/var/named/data/named.secroots";
- allow-query { any; };
- ## 将授权 localhost 替换为 any
- [[email protected] ~]# VIM /etc/named.rfc1912.zones
- // 编辑两个域名的区域配置文件
- zone "kgc.com" IN {
- type master;
- file "kgc.com.zone";
- allow-update { none; };
- };
- zone "accp.com" IN {
- type master;
- file "accp.com.zone";
- allow-update { none; };
- };
- [[email protected] ~]# cd /var/named
- [[email protected] named]# cp -p named.localhost kgc.com.zone
- [[email protected] named]# cp -p named.localhost accp.com.zone
- [[email protected] named]# VIM kgc.com.zone
- // 编辑 kgc 域名区域数据配置文件
- $TTL 1D
- @ IN SOA @ rname.invalid. (
- 0 ; serial
- 1D ; refresh
- 1H ; retry
- 1W ; expire
- 3H ) ; minimum
- NS @
- A 127.0.0.1
- www IN A 192.168.235.158
- ## 删除原来末行的内容, 添加域名解析地址为本机地址
- [[email protected] named]# VIM accp.com.zone
- // 编辑 accp 域名区域数据配置文件
- $TTL 1D
- @ IN SOA @ rname.invalid. (
- 0 ; serial
- 1D ; refresh
- 1H ; retry
- 1W ; expire
- 3H ) ; minimum
- NS @
- A 127.0.0.1
- www IN A 192.168.235.158
- ## 删除原来末行的内容, 添加域名解析地址为本机地址
- [[email protected] named]# systemctl start named
- // 开启 dns 服务
- [[email protected] named]# systemctl stop firewalld.service
- // 关闭防火墙
- [[email protected] named]# setenforce 0
- // 关闭增强型安全功能
三, 配置虚拟主机
第一步: 创建测试网页
- [[email protected] named]# cd
- [[email protected] ~]# mkdir -p /var/www/html/kgc
- [[email protected] ~]# mkdir -p /var/www/HTML/accp
- [[email protected] ~]# ls /var/www/HTML/
- accp kgc
- [[email protected] ~]# cd /var/www/HTML/
- [[email protected] HTML]# echo "this kgc web"> kgc/index.HTML
- [[email protected] HTML]# echo "this accp web"> accp/index.HTML
第二步: 编辑 nginx.conf 配置文件
- [[email protected] HTML]# VIM /usr/local/nginx/conf/nginx.conf
- server {
- listen 80;
- server_name www.kgc.com;
- charset utf-8;
- ## 支持中文字符
- access_log logs/www.kgc.com.access.log;
- ##kgc 站点访问日志
- location / {
- }
- error_page 500 502 503 504 /50x.HTML;
- ## 服务端报错相关网页
- location = /50x.HTML {
- root HTML;
- }
- }
- server {
- listen 80;
- server_name www.accp.com;
- charset utf-8;
- access_log logs/www.accp.com.access.log;
- location / {
- root /var/www/HTML/accp;
- index index.HTML index.htm;
- }
- error_page 500 502 503 504 /50x.HTML;
- location = /50x.HTML {
- root HTML;
- }
- }
第三步: 重载 Nginx 服务
- [[email protected] ~]# killall -s HUP nginx
- [[email protected] ~]# netstat -ntap | grep 80
- tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6117/nginx: master
第四步: 测试网页, 输入 www.kgc.com 与 www.accp.com 两个域名进行访问
基于端口的虚拟主机
配置虚拟主机
第一步: 创建另一个端口的测试网页
- [[email protected] ~]# cd /var/www/HTML/
- [[email protected] HTML]# echo "this is kgc 8080 web"> kgc/index.HTML
第二步: 编辑 nginx.conf 配置文件, 仅修改监听地址
- [[email protected] HTML]# VIM /usr/local/nginx/conf/nginx.conf
- server {
- listen 192.168.235.158:80;
- ## 监听主机的 80 端口
- server_name www.kgc.com;
- charset utf-8;
- access_log logs/www.kgc.com.access.log;
- location / {
- root /var/www/HTML/kgc;
- index index.HTML index.htm;
- }
- error_page 500 502 503 504 /50x.HTML;
- location = /50x.HTML {
- root HTML;
- }
- }
- server {
- listen 192.168.235.158:8080;
- ## 监听主机的 8080 端口
- server_name www.kgc.com;
- charset utf-8;
- access_log logs/www.kgc.com.access.log;
- location / {
- root /var/www/HTML/kgc;
- index index.HTML index.htm;
- }
- error_page 500 502 503 504 /50x.HTML;
- location = /50x.HTML {
- root HTML;
- }
- }
第三步: 重载 Nginx 服务
- [[email protected] HTML]# killall -s HUP nginx
- [[email protected] HTML]# netstat -ntap | grep 80
- tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 41958/nginx: master
第四步: 测试网页, 分别访问 80 端口的默认网页以及 8080 端口的网页
基于 IP 的虚拟主机
第一步: 添加网卡, 并规划域名 IP
主机 IP | 域名 |
---|---|
192.168.235.158 | www.kgc.com |
192.168.235.142 | www.accp.com |
第二步: 修改 accp 域名的区域数据文件配置
- [[email protected] ~]# VIM /var/named/accp.com.zone
- $TTL 1D
- @ IN SOA @ rname.invalid. (
- 0 ; serial
- 1D ; refresh
- 1H ; retry
- 1W ; expire
- 3H ) ; minimum
- NS @
- A 127.0.0.1
- www IN A 192.168.235.142
- ## 更改 IP 地址为 192.168.235.142
- [[email protected] ~]# systemctl restart named
- ## 重启域名解析服务
第三步: 编辑 nginx.conf 配置文件
- [[email protected] ~]# VIM /usr/local/nginx/conf/nginx.conf
- ## 此段不做修改
- server {
- listen 192.168.235.158:80;
- server_name www.kgc.com;
- charset utf-8;
- access_log logs/www.kgc.com.access.log;
- location / {
- root /var/www/HTML/kgc;
- index index.HTML index.htm;
- }
- error_page 500 502 503 504 /50x.HTML;
- location = /50x.HTML {
- root HTML;
- }
- }
- server {
- listen 192.168.235.142:80;
- ## 修改本段监听地址为 192.168.234.142
- server_name www.accp.com;
- charset utf-8;
- access_log logs/www.accp.com.access.log;
- location / {
- root /var/www/HTML/accp;
- index index.HTML index.htm;
- }
- error_page 500 502 503 504 /50x.HTML;
- location = /50x.HTML {
- root HTML;
- }
- }
第四步: 重载 Nginx 服务
- [[email protected] ~]# killall -s HUP nginx
- [[email protected] ~]# netstat -ntap | grep 80
- tcp 0 0 192.168.235.142:80 0.0.0.0:* LISTEN 7299/nginx: master
- tcp 0 0 192.168.235.158:80 0.0.0.0:* LISTEN 7299/nginx: master
第五步: 测试网页, 分别输入 IP 地址 192.168.235.158 和 192.168.235.142 进行访问
到此便是 Nginx 虚拟主机应用的全部内容了, 谢谢阅读!!!
来源: http://www.bubuko.com/infodetail-3275885.html