当前位置: 首页 > news >正文

Apache和Nginx实现虚拟主机的3种方式

目录

首先介绍一下Apache和nginx:

Nginx和Apache的不同之处:

虚拟主机

准备工作

Apache实现:

方法1:使用不同的ip来实现

方法2:使用相同的ip,不同的端口来实现

方法3:使用相同的ip,相同的端口,不同的主机名(域名)

Nginx实现:

方法1:使用不同的ip来实现

方法2:使用相同的ip,不同的端口来实现

方法3:使用相同的ip,相同的端口,不同的主机名(域名)


首先介绍一下Apache和nginx:

Apache(Apache HTTP Server):是一个模型化的服务器,可以运行在几乎所有的服务器上。其属于应用服务器

特点:支持模块多、性能稳定、Apache本身是静态解析,适合静态HTML、图片,但是可以通过扩展脚本、模块等支持动态页面等

Nginx:是俄罗斯人编写的十分轻量级的HTTP服务器,是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器,

特点:占有内存少,并发能力强、抑郁开发、部署方便。Niginx支持多语言通用服务器

Nginx和Apache的不同之处:

  1. Nginx配置简介,Apache较为复杂;
  2. Nginx静态处理性能比Apache高很多
  3. Apache是同步多进程模型,一个连接诶对应一个进程;Nginx是异步的,多个连接可以对一个进程
  4. Nginx处理静态文件好,耗费内存少;动态请求Apache比较擅长,Nginx更适合去做静态和反向
  5. Nginx适合做前端服务器,负载性能很好;Nginx本身就是一个反向代理服务器,且支持负载均衡

虚拟主机

解决的问题:解决一台web服务器运行多个web应用

准备工作

首先本次测试环境运行在虚拟机中:使用center os 7

然后进入配置文件中:

vim /etc/httpd/conf/httpd.conf 

找到上图的位置

1.将ServerName前的注释删除,即开启了www.example.com这个域名的访问

2.将Require all denied修改为 granted ,即允许所有的请求

3.找到这里增加一条;作用是配置php的配置环境让php可以正常使用

 

4.找到这里在后面增加一个 index.php,即增加了一个php页面

配置完成后重启http服务:

systemctl start  httpd

 配置LNMP环境:

安装所有需要的软件包:

yum install epel-release.noarch 
yum install nginx mariadb-server.x86_64  mariadb php php-fpm.x86_64 php-mysql -y

关闭selinux:

setenforce 0

启动:

systemctl start nginx
systemctl start php-fpm.service 

Apache实现:

方法1:使用不同的ip来实现

(1)首先创建一个目录:

 mkdir /www/

 (2)创建日志存放的目录:

 mkdir /www/logs

(3)为两个目录下的index.html写入内容:

echo "Hello Apache" > /www/index.html

(4)为网卡ens160增加一个ip地址:

nmcli connection modify ens33 +ipv4.addresses 192.168.159.250/24 ipv4.method manual

(5)激活该地址:

nmcli con up ens33

(6)安装离线帮助包:

dnf install -y httpd-manual

(7)重启httpd服务:

systemctl restart httpd

(8)在浏览器中打开帮助手册:(192.168.159.200/mantal Apache HTTP Server Version 2.4 Documentation - Apache HTTP Server Version 2.4)

(9)进入配置路径:

cd /etc/httpd/conf.d/

(10) vim VirtualHost.conf 将以下内容写入:

<Directory "/www/">Options Indexes FollowSymLinksAllowOverride None            Require all granted           
</Directory>          
<VirtualHost 192.168.159.200:80>  DocumentRoot "/www"      ServerName www1.example.com   ErrorLog "/www/logs/error_log"CustomLog "/www/logs/access_log" combined
</VirtualHost>        
<VirtualHost 192.168.159.250:80>                  DocumentRoot "/www"                      ServerName www2.example.com                   ErrorLog "/www/logs/error_log"           CustomLog "/www/logs/access_log" combined
</VirtualHost>

(11)检查一下是否有语法错误

httpd -t

 

(12)重启httpd:

systemctl restart httpd

注:如果这里不成功很有可能和selinux有关

关闭selinux:

setenforce 0

(13)使用浏览器测试:

 

可以看到,我们成功的实现了不同的ip地址,访问同一个资源 

方法2:使用相同的ip,不同的端口来实现

(1)首先将上面添加的ip删除:

nmcli connection modify ens33 -ipv4.addresses 192.168.159.250/24 ipv4.method manual
nmcli con up ens33

(3)vim /etc/http/conf.d/VirtualHost写入以下内容:

Listen 81                      
Listen 82                      
<Directory "/www/">            
Options Indexes FollowSymLinks 
AllowOverride None             
Require all granted            
</Directory>                   
<VirtualHost 192.168.159.200:81>DocumentRoot "/www"   ServerName www1.example.comErrorLog "/www/logs/error_log"CustomLog "/www/logs/access_log" combined
</VirtualHost>                 
<VirtualHost 192.168.159.200:82> DocumentRoot "/www"     ServerName www2.example.com  ErrorLog "/www/logs/error_log"CustomLog "/www/logs/access_log" combined
</VirtualHost>

(4)重启httpd:

systemctl restart httpd

(5)防火墙放行81和82端口:

 firewall-cmd --permanent --add-port=81-82/tcpsuccess
firewall-cmd --reload 让防火墙立即生效success

(6)使用浏览器进行测试:

方法3:使用相同的ip,相同的端口,不同的主机名(域名)

(1)将配置文件修改为:

<Directory "/www/">       
Options Indexes FollowSymLinks
AllowOverride None        
Require all granted       
</Directory>              
<VirtualHost 192.168.159.200:80>DocumentRoot "/www"ServerName www1.example.comErrorLog "/www/logs/error_log"CustomLog "/www/logs/access_log" combined
</VirtualHost>            
<VirtualHost 192.168.159.200:80>DocumentRoot "/www"    ServerName www2.example.com ErrorLog "/www/logs/error_log"CustomLog "/www/logs/access_log" combined
</VirtualHost>

(2)重启:

 systemctl restart httpd

(3)在windowC:\Windows\System32\drivers\etc的路径中的hosts中添加对应关系:

192.168.159.200 www1.example.com www2.example.com

测试:

Nginx实现:

方法1:使用不同的ip来实现

为当前网卡增加一个ip

nmcli  con modify  ens33 +ipv4.addresses 192.168.159.222/24
nmcli con up ens33 

 

注:这里将ip地址修改为自己主机一个网段的ip地址 

创建文件夹:

mkdir /www/

为主页面中写入内容:vim index.html

"hello 我的路径是www/index.html"

为这个页面创建日志文件,后面配置虚拟主机会用到

mkdir /www/logs

然后修改配置文件:

vim  /etc/nginx/conf.d/test.conf

将以下内容写入:

server {listen 80;server_name 192.168.159.200;charset utf-8;index index.html;root /www/;
}
server {listen 80;server_name 192.168.159.201;charset utf-8;index index.html;root /www/;}

测试:

 

根据结果我们可以看到,使用不容的ip地址访都问到了我们写的主页面

方法2:使用相同的ip,不同的端口来实现

这里首先将之前新增加的ip删除掉:

nmcli  con modify  ens33 -ipv4.addresses 192.168.159.201
nmcli con up ens33 

修改虚拟主机为:

server {listen 81;server_name 192.168.159.200;charset utf-8;index index.html;root /www/web1;
}
server {listen 82;server_name 192.168.159.200;charset utf-8;index index.html;root /www/web2;}

防火墙放行tcp81/82端口,或者关闭防火墙

上面的Apache实现时使用了方形端口,那我这里直接关闭防火墙:

systemctl stop firewall.service

重启nginx服务:

systemctl restart nginx.service

测试:

方法3:使用相同的ip,相同的端口,不同的主机名(域名)

修改配置文件为:

server {listen 80;server_name www1.example.com;charset utf-8;index index.html;root /www/web1;
}
server {listen 80;server_name www2.example.com;charset utf-8;index index.html;root /www/web2;}

在window主机中的host中增加对应关系

192.168.159.200 www1.example.com 
192.168.159.200 www2.example.com

测试:

 

到这里Nginx和Apache三种虚拟主机的配置就已经全部完成了!

相关文章:

Apache和Nginx实现虚拟主机的3种方式

目录 首先介绍一下Apache和nginx&#xff1a; Nginx和Apache的不同之处&#xff1a; 虚拟主机 准备工作 Apache实现&#xff1a; 方法1&#xff1a;使用不同的ip来实现 方法2&#xff1a;使用相同的ip&#xff0c;不同的端口来实现 方法3&#xff1a;使用相同的ip&…...

【DP】背包问题全解

一.简介 DP&#xff08;动态规划&#xff09;背包问题是一个经典的组合优化问题&#xff0c;通常用来解决资源分配的问题&#xff0c;如货物装载、投资组合优化等。问题的核心思想是在有限的资源约束下&#xff0c;选择一组物品以最大化某种价值指标&#xff0c;通常是总价值或…...

04 jenkins中使用各种变量(Powershell、cmd)

批处理中使用jenkins内部和变量插件定义的环境变量&#xff1a;%WORKSPACE%Powershell插件中使用jenkins内部环境变量&#xff1a;${ENV:WORKSPRACE}Powershell函数内部使用函数入参&#xff1a;$($dllname)Powershell中定义变量&#xff1a;$DllNamePowershell中使用powershel…...

2023年云计算的发展趋势

随着互联网和信息技术的快速发展&#xff0c;云计算已经成为了企业和个人的重要工具&#xff0c;而在未来&#xff0c;云计算仍然会持续发展&#xff0c;并且发展趋势会更加迅猛。在本文中&#xff0c;我们将讨论2023年云计算的发展趋势。 一、混合云将成为主流 混合云是指将公…...

工作十年+的测试应该具备什么能力?

大概是2014年的时候&#xff0c;我开始接触面试工作&#xff0c;就是从应聘者转为面试官&#xff0c;记得印象深刻的是面试了一位做了8年的测试。对方气场很足&#xff0c;嗯&#xff0c;毕竟那时的我还只是一个3、4年经验的小测试&#xff0c;相反&#xff0c;印象深刻的并不是…...

区块链链游合约系统开发项目模式技术方案

​随着区块链技术的发展&#xff0c;链游合约系统开发逐渐成为了一个备受关注的项目。本文将探讨区块链链游合约系统开发项目的技术方案&#xff0c;包括项目背景、开发目标、技术架构、系统流程、安全措施等方面的内容。 一、项目背景 链游是一种基于区块链技术的游戏&#xf…...

业务出海之服务器探秘

这几年随着国内互联网市场的逐渐饱和&#xff0c;越来越多的公司加入到出海的行列&#xff0c;很多领域都取得了很不错的成就。虽然出海可以获得更加广阔的市场&#xff0c;但也需要面对很多之前在国内可能没有重视的一些问题。集中在海外服务器的选择维度上就有很大的变化。例…...

飞天使-django创建一个初始项目过程

创建django项目 运行项目 运行命令 pyhont manage.py runserver 然后访问 http://127.0.0.1:8000/&#xff0c; 则可以打开本地新建的项目 虚拟环境的部署-mac 在一台计算机上可以通过虚拟环境实现多个版本Django的开发环境 安装虚拟环境工具&#xff1a;如果你的系统中没有安…...

【工具插件类教学】全局积雪系统和雪痕迹显示(移动痕迹)

目录 一、演示场景对比效果 ​二、导入工具插件 三、使用流程 1.添加脚本组件GlobalSnow...

​软考-高级-系统架构设计师教程(清华第2版)【第3章 信息系统基础知识(p120~159)-思维导图】​

软考-高级-系统架构设计师教程&#xff08;清华第2版&#xff09;【第3章 信息系统基础知识(p120~159)-思维导图】 课本里章节里所有蓝色字体的思维导图...

STM32基础--NVIC中断控制器

一、NVIC是什么&#xff1f; NVIC是一种中断控制器。当一个中断正在处理时&#xff0c;另一个更高优先级的中断可以打断当前中断的执行&#xff0c;并立即得到处理。这种机制使得处理器在高速运行的同时&#xff0c;能够及时响应不同优先级的中断请求。 二、有哪些优先级&…...

使用matlab实现图像信号的色彩空间转换

利用matlab对图像信号进行读取&#xff0c;并对RGB空间进行转换&#xff0c;如转换到HSI空间等。 下面的这个代码是在使用了rgb2hsi()方法失败后&#xff0c;进行修改的。 rgb2hsi(img)这个方法可以将RGB图像转换为HIS图像&#xff1b;但是爆出了 Untitled5(line 5)hsi rgb2h…...

Vatee万腾科技决策力的引领创新:Vatee数字化视野的崭新天地

在数字时代的激烈竞争中&#xff0c;Vatee万腾以其科技决策力的引领&#xff0c;开创了数字化视野的崭新天地。这并不仅仅是一场技术的飞跃&#xff0c;更是一次对未来的深刻洞察和引领创新的勇敢实践。 Vatee万腾的科技决策力不仅仅停留在数据分析和算法的运用&#xff0c;更是…...

Go语言安装教程

【Go系列-1】-Go安装教程 环境提前准备 安装的时候可以选择自己的目录进行环境管理 E:\Z_Enviroment\Go创建文件夹&#xff1a; E:\Z_Enviroment\Go E:\Z_Enviroment\GoWorks E:\Z_Enviroment\GoWorks\bin E:\Z_Enviroment\GoWorks\pkg E:\Z_Enviroment\GoWorks\src环境变量…...

MVVM框架:图片加载有问题

一、前言&#xff1a;在我使用ImageView加载图片的时候添加如下代码发现报错 app:imageUrl"{viewModel.observableField.assetImg}"报错如下错误 二、原因&#xff1a;是啥我不太清楚好像是没有imageView的适配器&#xff0c;后来我看了一下确实没有 public class I…...

一篇文章搞明白js运行机制——事件循环

1、解释 JavaScript 的执行机制。 JavaScript 的执行机制基于事件循环。事件循环包括一个任务队列&#xff08;Task Queue&#xff09;和一个微任务队列&#xff08;Microtask Queue&#xff09;。当一个函数被调用时&#xff0c;它被添加到微任务队列中。事件循环每次迭代都会…...

Leetcode 第 371 场周赛题解

Leetcode 第 371 场周赛题解 Leetcode 第 371 场周赛题解题目1&#xff1a;100120. 找出强数对的最大异或值 I思路代码复杂度分析 题目2&#xff1a;100128. 高访问员工思路代码复杂度分析 题目3&#xff1a;100117. 最大化数组末位元素的最少操作次数思路代码复杂度分析 题目4…...

keras转onnx,TensorFlow转tf.keras.models.load_model,onnx精度转换

参考&#xff1a; https://blog.csdn.net/Deaohst/article/details/126864267 转onnx 别直接转onnx。 先转PB&#xff1a; import tensorflow as tfmodel_path ./models/model.h5 # 模型文件 model tf.keras.models.load_model(model_path) model.sa…...

高可用架构设计

1. 引言 软件系统有三个追求&#xff1a;高性能、高并发、高可用&#xff0c;俗称三高。三者既有区别也有联系&#xff0c;门门道道很多&#xff0c;本篇讨论高可用 高可用技术的重要性在于保证系统的连续可用性&#xff0c;提高系统的稳定性和可靠性。它可以应对高并发和大规…...

qemu 之 uboot、linux 启动

目录 编译uboot、kernel 编译启动从 uboot 中引导启动 linux注参考 本文主要说明 arm64 在 qemu 上的相关启动。 编译 使用的是 qemu-8.1.1 版本&#xff0c;编译命令如下: ../configure --cc/usr/local/bin/gcc --prefix/home/XXX/qemu_out --enable-virtfs --enable-slir…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...