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三种虚拟主机的配置就已经全部完成了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/190634.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端---CSS的盒模型

文章目录 什么是盒模型&#xff1f;设置边框设置内边距设置外边距块级元素水平居中 什么是盒模型&#xff1f; 页面上的每个HTML元素都是一个一个的“盒子”&#xff0c;这些盒子由&#xff1a;内容、内边距、边框、外边距组成。 我们可以和住的房子联系起来&#xff0c;更好…

gcc [linux]

目录 背景知识 gcc如何完成 格式 预处理&#xff08;进行宏替换&#xff09; 编译&#xff08;生成汇编&#xff09; 汇编&#xff08;生成机器可执行码&#xff09; 连接&#xff08;生成可执行文件或库文件&#xff09; 函数库 静态库 静态链接优势 动态库 动态链…

MySQL大表数据导入到MongoDB

修改参数 &#xff0c;开启into outfile的功能 secure_file_priv/home/backups/mysql_outfile 重启数据库是参数生效 按条件导出MySQL数据 select * from receipt_receive_log where gmt_create > 2020-04-13 00:00:00 and gmt_create< 2020-07-13 00:00:00 INTO O…

AI工具-PPT-SlidesAI

SlidesAI 使用手册 https://tella.video/get-started-with-slidesai-tutorial-18yq 简介 SlidesAI 是一款快速创建演示文稿的AI工具&#xff0c;适用于无设计经验的用户。 开始使用 1. **安装与设置** - 访问 [SlidesAI官网](https://www.slidesai.io/zh)。 - 完成简单的设置…

vue3项目常用功能分享

Vue3常用功能分享 本文主要分享一下在使用vue3开发项目时的一些常用功能 一、自动注册全局组件 自动注册components目录下所有vue组件并以组件的文件名为组件的名称 // components/index.tsimport { type App, defineAsyncComponent } from vue const components Object.e…

IP-guard WebServer RCE漏洞复现

0x01 产品简介 IP-guard是由溢信科技股份有限公司开发的一款终端安全管理软件&#xff0c;旨在帮助企业保护终端设备安全、数据安全、管理网络使用和简化IT系统管理。 0x02 漏洞概述 漏洞成因 在Web应用程序的实现中&#xff0c;参数的处理和验证是确保应用安全的关键环节…

Docker学习——⑥

文章目录 1、什么是存储卷?2、为什么需要存储卷?3、存储卷分类4、管理卷 Volume5、绑定卷 bind mount6、临时卷 tmpfs7、综合实战-MySQL 灾难恢复8、常见问题 1、什么是存储卷? 存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立…

AI:78-基于深度学习的食物识别与营养分析

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中,…

统计分钟级别的视频在线用户数+列炸裂+repeat函数

统计分钟级别的视频在线用户数 1、原始数据如下&#xff1a; uid vid starttime endtime select aa as uid,v00l as vid,2023-10-25 12:00 as starttime,2023-10-2512:15 as endtime union select bb as uid,v002 as vid,2023-10-25 12:05 as starttime,2023-10-25 12:19 …

(二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB

一、七种算法&#xff08;DBO、LO、SWO、COA、LSO、KOA、GRO&#xff09;简介 1、蜣螂优化算法DBO 蜣螂优化算法&#xff08;Dung beetle optimizer&#xff0c;DBO&#xff09;由Jiankai Xue和Bo Shen于2022年提出&#xff0c;该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

通用的链栈实现(C++)

template<class T> class MyStack//链栈 { private:struct StackNode{T data;StackNode* next;StackNode(const T& val T(), StackNode* p nullptr) :data(val), next(p) {}//};StackNode* top;int cursize;void clone(const MyStack& s){Clear();cursize s.c…

postgresql实现job的六种方法

简介 在postgresql数据库中并没有想oracle那样的job功能&#xff0c;要想实现job调度&#xff0c;就需要借助于第三方。本人更为推荐kettle&#xff0c;pgagent这样的图形化界面&#xff0c;对于开发更为友好 优势劣势Linux 定时任务&#xff08;crontab&#xff09; 简单易用…

leetCode 25.K 个一组翻转链表

给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。k 是一个正整数&#xff0c;它的值小于 或 等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。你不能只是单纯的改变节点内部的值&a…

关于electron打包卡在winCodeSign下载问题

简单粗暴&#xff0c;直接上解决方案&#xff1a; 在你的项目根目录下创建一个.npmrc的文件&#xff0c;且在里面加上以下文本&#xff0c;不用在意这个镜像源是不是最新的&#xff0c;它会自己重定向到nodemirror这个域名里下载 ELECTRON_MIRRORhttps://npm.taobao.org/mirror…

小程序day05

使用npm包 Vant Weapp 类似于前端boostrap和element ui那些的样式框架。 安装过程 注意:这里建议直接去看官网的安装过程。 vant-weapp版本最好也不要指定 在项目目录里面先输入npm init -y 初始化一个包管理配置文件: package.json 使用css变量定制vant主题样式&#xff0…

Gogs安装和部署教程-centos上

0、什么是 Gogs? Gogs 是一款极易搭建的自助 Git 服务。 Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发&#xff0c;并且支持 Go 语言支持的 所有平台&#xff0c;包括 Linux、Mac OS X、Windo…

pytorch搭建squeezenet网络的整套工程(升级版)

上一篇当中&#xff0c;使用pytorch搭建了一个squeezenet&#xff0c;效果还行。但是偶然间发现了一个稍微改动的版本&#xff0c;拿来测试一下发现效果会更好&#xff0c;大概网络结构还是没有变&#xff0c;还是如下的第二个版本&#xff1a; 具体看网络结构代码&#xff1a…

微信小程序案例3-2 计算器

文章目录 一、运行效果二、知识储备&#xff08;一&#xff09;data-*自定义属性&#xff08;二&#xff09;模块 三、实现步骤&#xff08;一&#xff09;准备工作1、创建项目2、设置导航栏 &#xff08;二&#xff09;实现页面结构1、编写页面整体结构2、编写结果区域的结构3…

uni-app点击按钮弹出提示框-uni.showModal(OBJECT),选择确定和取消

参考文档&#xff1a; https://uniapp.dcloud.io/api/ui/prompt?idshowmodal 显示模态弹窗&#xff0c;可以只有一个确定按钮&#xff0c;也可以同时有确定和取消按钮。类似于一个API整合了 html 中&#xff1a;alert、confirm。 uni.showModal({title: 提示,content: 这是一…

【优化版】DOSBox及常用汇编工具的详细安装教程

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、图解数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 &#x1f4cb;前言一. dosbox的介绍、下载和安装1.1 dosbos简介1.2 dosbox的下载1.2.1 方式一&a…