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.hqwc.cn/news/170934.html

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

相关文章

PyCharm因安装了illuminated Cloud插件导致加载项目失败

打开Pycharm时会有弹窗提示&#xff1a; The license for Illuminated Cloud is invalid or has expired. All Illuminated Cloud features will be disabled. 这个弹窗会导致你加载项目一直失败&#xff0c;close project 也关不掉&#xff0c;我都是用任务管理器杀死进程的…

【C++】:内存管理 || 泛型编程 || 函数模板 || 类模板 || 内存泄漏(后期结合智能指针详讲)

&#x1f440;1.operator new与operator delete函数 operator new与operator delete函数&#xff08;重点&#xff09; new和delete是用户进行动态内存申请和释放的操作符&#xff0c;operator new 和operator delete是系统提供的全局函数&#xff0c;new在底层调用operator n…

酷开科技智能大屏OS Coolita亮相第134届中国进出口商品交易会

作为中国外贸的“风向标”和“晴雨表”&#xff0c;广交会因其历史长、规模大、商品种类全、到会客商多、成交效果好&#xff0c;被称为“中国第一展”&#xff0c;它见证了中国改革开放的时代大潮与对外贸易的蓬勃发展。 2023年10月15日&#xff0c;第134届中国进出口商品交易…

11.13 牛客刷题8/10

11.13 信号完整性 指针地址 的加减&#xff0c;注意 最后转为16进制

Presentation Prompter 5.4.2(mac屏幕提词器)

Presentation Prompter是一款演讲辅助屏幕提词器软件&#xff0c;旨在帮助演讲者在公共演讲、主持活动或录制视频时更加流畅地进行演讲。以下是Presentation Prompter的一些特色功能&#xff1a; 提供滚动或分页显示&#xff1a;可以将演讲稿以滚动或分页的形式显示在屏幕上&a…

nav2 调节纯追踪算法

纯追踪算法 纯追踪基础 The core idea is to find a point on the path in front of the robot and find the linear and angular velocity to help drive towards it. 核心思想是在机器人前方的路径上找到一个点&#xff0c;并找到一个合适的线速度和角速度&#xff0c;以驱…

PNAS | 蛋白质结构预测屈服于机器学习

今天为大家介绍的是来自James E. Rothman的一篇短文。今年的阿尔伯特拉斯克基础医学研究奖表彰了AlphaFold的发明&#xff0c;这是蛋白质研究历史上的一项革命性进展&#xff0c;首次提供了凭借序列信息就能够准确预测绝大多数蛋白质的三维氨基酸排列的实际能力。这一非凡的成就…

双H桥直流马达步进电机驱动芯片SS8833E

由工采网代理的率能SS8833E是一款适用于有刷直流或双极步进电机的集成电机驱动芯片&#xff1b;采用eTSSOP16封装&#xff1b;该器件集成了两个PNMOS H桥和电流调节电路&#xff1b;电机输出电流可以由外部脉宽调制器&#xff08;PWM&#xff09;或内部PWM电流控制器控制。 工…

20231108在Ubuntu22.04下编译安装cmake-3.27.7.tar.gz

20231108在Ubuntu22.04下编译安装cmake-3.27.7.tar.gz 2023/11/8 17:28 缘起&#xff0c;编译cv180zb的时候提示说cmake的版本低&#xff01; OBJCOPY platform/generic/firmware/payloads/test.bin OBJCOPY platform/generic/firmware/fw_dynamic.bin OBJCOPY platfor…

【计算机网络】VRRP协议理论和配置

目录 1、VRRP虚拟路由器冗余协议 1.1、协议作用 1.2、名词解释 1.3、简介 1.4、工作原理 1.5、应用实例 2、 VRRP配置 2.1、配置命令 2.2、拓扑与配置&#xff1a; 1、VRRP虚拟路由器冗余协议 1.1、协议作用 虚拟路由冗余协议(Virtual Router Redundancy Protocol&am…

AI工具-PPT-SlidesAI

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

No192.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…