nginx配置虚拟主机的详细步骤


Posted in Servers onJuly 21, 2021

虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。

nginx配置虚拟主机的详细步骤

利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组Nginx进程上运行多个网站的功能。

配置虚拟主机有三种方法:

  • 基于域名的虚拟主机 : 不同的域名、相同的IP(此方式应用最广泛)
  • 基于端口的虚拟主机 : 不使用域名、IP来区分不同站点的内容,而是用不同的TCP端口号
  • 基于IP地址的虚拟主机 : 不同的域名、不同的IP ( 需要加网络接口 ,应用的不广泛) 基于IP地址

nginx配置虚拟主机的详细步骤

方式一:多网卡多IP

两个物理网卡,两个IP

# 两张物理网卡ens32和ens34
[root@nginx network-scripts]# ifconfig ens32 | awk 'NR==2 {print $2}'  
192.168.126.41

[root@nginx network-scripts]# ifconfig ens34 | awk 'NR==2 {print $2}'  
192.168.126.42

编辑配置文件,基于每个IP创建一个虚拟主机

# 为防止 /etc/nginx/conf.d/default.conf 配置文件影响,对其进行重命名
[root@nginx ~]# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default	 

[root@nginx ~]# vim /etc/nginx/conf.d/ip.conf
# ens32网卡对应的虚拟主机
server {
  listen 192.168.126.41:80;

  location / {
    root /ip_ens32;
    index index.html;
  }
}

# ens34 网卡对应的虚拟主机
server {
  listen 192.168.126.42:80;

  location / {
    root /ip_ens34;
    index index.html;
  }
}

创建虚拟主机的网页文件目录及文件

[root@nginx ~]# mkdir /ip_ens32
[root@nginx ~]# mkdir /ip_ens34

[root@nginx ~]# echo "ens32" > /ip_ens32/index.html
[root@nginx ~]# echo "ens34" > /ip_ens34/index.html

检查配置文件的语法

[root@nginx ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

重载nginx服务

[root@nginx ~]# systemctl reload nginx

测试

[root@nginx ~]# curl 192.168.126.41
ens32
[root@nginx ~]# curl 192.168.126.42
ens34

nginx配置虚拟主机的详细步骤nginx配置虚拟主机的详细步骤

方式二:单网卡多IP

为一个物理网卡配置多个ip

ip addr add IP/MASK dev 网卡名

# 删除
ip addr del IP/MASK dev 网卡名

其余步骤同上面多网卡多IP的配置

基于端口

nginx配置虚拟主机的详细步骤

多使用于公司内部,无法使用域名或没有域名时

配置

[root@nginx ~]# vim /etc/nginx/conf.d/port.conf
server {
  listen 81;

  location / {
    root /port_81;
    index index.html;
  }
}

server {
  listen 82;

  location / {
    root /port_82;
    index index.html;
  }
}

[root@nginx ~]# mkdir /port_{81..82}
[root@nginx ~]# echo "81" > /port_81/index.html
[root@nginx ~]# echo "82" > /port_82/index.html

[root@nginx ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@nginx ~]# systemctl reload nginx

测试

[root@nginx ~]# curl 192.168.126.41:81
81
[root@nginx ~]# curl 192.168.126.41:82
82

nginx配置虚拟主机的详细步骤nginx配置虚拟主机的详细步骤

基于域名

nginx配置虚拟主机的详细步骤

配置

一般一个域名对应一个配置文件,便于管理

[root@nginx ~]# vim /etc/nginx/conf.d/test1.dxk.com.conf
server {
  listen 80;
  server_name test1.dxk.com;

  location / {
    root /test1;
    index index.html;
  }
}

[root@nginx ~]# vim /etc/nginx/conf.d/test2.dxk.com.conf
server {
  listen 80;
  server_name test2.dxk.com;

  location / {
    root /test2;
    index index.html;
  }
}

[root@nginx ~]# mkdir /test{1..2}
[root@nginx ~]# echo "test1" > /test1/index.html
[root@nginx ~]# echo "test2" > /test2/index.html

[root@nginx ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@nginx ~]# systemctl reload nginx

测试

# 配置域名解析
[root@nginx ~]# echo -e "192.168.126.41 test1.dxk.com\n192.168.126.41 test2.dxk.com" >> /etc/hosts
[root@nginx ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.126.41 test1.dxk.com
192.168.126.41 test2.dxk.com

[root@nginx ~]# curl test1.dxk.com
test1
[root@nginx ~]# curl test2.dxk.com
test2

nginx配置虚拟主机的详细步骤
nginx配置虚拟主机的详细步骤
nginx配置虚拟主机的详细步骤

这里有个问题:

如果在配置域名解析时由于写错了,那么访问该错误域名(未配置该错误域名的虚拟主机)时竟然还会返回网页内容。

[root@nginx ~]# vim /etc/hosts
192.168.126.41 test1.dxk.com
192.168.126.41 test3.dxk.com   # 这里本应该是 test2.dxk.com ,但是由于写错了,而且对应test3.dxk.com域名的虚拟主机并不存在

访问该错误域名

[root@nginx ~]# curl test3.dxk.com
test1

# 可以看到,还是会返回网页信息

因为在配置域名解析时,虽然域名写错了,但是IP是对的,那么此时服务端默认会返回满足是该IP且端口为80的排在第一个的虚拟主机的网页信息给客户端

[root@nginx ~]# ll /etc/nginx/conf.d/
-rw-r--r--. 1 root root  112 Jul  3 21:23 test1.dxk.com.conf
-rw-r--r--. 1 root root  112 Jul  3 21:22 test2.dxk.com.conf

这是需要注意的

到此这篇关于nginx虚拟主机的文章就介绍到这了,更多相关nginx虚拟主机内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
查看nginx配置文件路径和资源文件路径的方法
Mar 31 Servers
阿里云Nginx配置https实现域名访问项目(图文教程)
Mar 31 Servers
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
May 26 Servers
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
Jul 07 Servers
图文详解Nginx版本平滑升级方案
Sep 15 Servers
Apache Hudi数据布局黑科技降低一半查询时间
Mar 31 Servers
为Centos安装指定版本的Docker
Apr 01 Servers
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
Apr 29 Servers
docker 制作mysql镜像并自动安装
May 20 Servers
Linux下搭建SFTP服务器的命令详解
Jun 25 Servers
教你nginx跳转配置的四种方式
Jul 07 Servers
彻底卸载VMware虚拟机的超详细步骤记录
Jul 15 Servers
nginx的zabbix 5.0安装部署的方法步骤
nginx请求限制配置方法
使用goaccess分析nginx日志的详细方法
Jul 09 #Servers
nginx作grpc的反向代理踩坑总结
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
使用nginx配置访问wgcloud的方法
Jun 26 #Servers
Nginx反向代理配置的全过程记录
You might like
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
理解php Hash函数,增强密码安全
2011/02/25 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
用PHP代码给图片加水印
2015/07/01 PHP
php根据日期显示所在星座的方法
2015/07/13 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
用javascript实现自定义标签
2007/05/08 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
javascript日期转换 时间戳转日期格式
2011/11/05 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
javascript中[]和{}对象使用介绍
2013/03/20 Javascript
上传的js验证(图片/文件的扩展名)
2013/04/25 Javascript
javascript 弹出的窗口返回值给父窗口具体实现
2013/11/23 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
[06:25]DOTA2英雄梦之声_第17期_大地之灵
2014/06/20 DOTA
开始着手第一个Django项目
2015/07/15 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
使用python语言,比较两个字符串是否相同的实例
2018/06/29 Python
python操作excel让工作自动化
2019/08/09 Python
利用Python如何实时检测自身内存占用
2020/05/09 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
通过实例解析Python文件操作实现步骤
2020/09/21 Python
python制作抽奖程序代码详解
2021/01/15 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
护士个人简历自荐信
2013/10/18 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
导游词之阆中古城
2019/12/23 职场文书
Python 中的 copy()和deepcopy()
2021/11/07 Python