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解决403 forbidden的完整步骤
Apr 01 Servers
Nginx已编译的nginx-添加新模块
Apr 01 Servers
uwsgi+nginx代理Django无法访问静态资源的解决
May 10 Servers
Nginx配置之实现多台服务器负载均衡
Aug 02 Servers
Nginx反向代理至go-fastdfs案例讲解
Aug 02 Servers
Linux、ubuntu系统下查看显卡型号、显卡信息详解
Apr 07 Servers
Windows server 2012 配置Telnet以及用法详解
Apr 28 Servers
服务器间如何实现文件共享
May 20 Servers
zabbix配置nginx监控的实现
May 25 Servers
windows server 2016 域环境搭建的方法步骤(图文)
Jun 25 Servers
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
Aug 14 Servers
zabbix如何添加监控主机和自定义监控项
Aug 14 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 xml留言板 xml存储数据的简单例子
2009/08/24 PHP
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
PHP xpath提取网页数据内容代码解析
2020/07/16 PHP
javascript动画效果类封装代码
2007/08/28 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
详解JavaScript中的表单验证
2015/06/16 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
jQuery获取某天的农历日期并判断是否除夕或新年的方法
2016/03/01 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
浅析Bootstrip的select控件绑定数据的问题
2016/05/10 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
vuex中使用对象展开运算符的示例
2017/09/25 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
javascript定时器的简单应用示例【控制方块移动】
2019/06/17 Javascript
浅入深出Vue之自动化路由
2019/08/06 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
python常规方法实现数组的全排列
2015/03/17 Python
Python中Random和Math模块学习笔记
2015/05/18 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
Python参数传递及收集机制原理解析
2020/06/05 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
外语系毕业生找工作的求职信
2013/11/28 职场文书
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
小学运动会通讯稿
2015/07/18 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
党员读书活动心得体会
2016/01/14 职场文书
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js