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 FollowSymLinks
    AllowOverride 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.com
    ErrorLog "/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.com
    ErrorLog "/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.mfbz.cn/a/135519.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解决游戏找不到x3daudio1_7.dll文件的5个方法,快速修复dll问题

在电脑使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“x3daudio1_7.dll丢失”。这个错误通常会导致软件游戏无法正常启动运行。为了解决这个问题&#xff0c;我们需要采取一些措施来修复丢失的文件。本文将详细介绍解决x3daudio1_7.dll丢失的方法…

企业云盘与个人云盘:区别与特点一览

企业云盘是企业在寻找文件协同工具的过程中绕不开的一个选项。企业为什么需要专门购置企业网盘&#xff0c;个人云盘能否满足企业的文件协作需求呢&#xff1f;企业云盘和个人云盘有什么区别呢&#xff1f; 企业云盘与个人云盘的区别 1、使用对象&#xff1a;顾名思义&#xf…

Java 简单实现一个 TCP 回显服务器

文章目录 TCP 服务端TCP 客户端实现效果TCP 服务端(实现字典功能)总结 TCP 服务端 package network;import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Soc…

【C++】C++入门详解 II【深入浅出 C++入门 这一篇文章就够了】

C入门 七、引用&#xff08;一&#xff09;引用 概念&#xff08;1&#xff09;引用 概念&#xff08;2&#xff09;引用 使用★☆&#xff08;3&#xff09;引用 特性&#xff08;4&#xff09;常引用 &#xff08;二&#xff09;引用的 实际应用 及 其意义☆&#xff08;1&am…

合肥中科深谷嵌入式项目实战——基于ARM语音识别的智能家居系统(一)

基于ARM语音识别的智能家居系统 我们接下来带大家完成基于语音识别的智能家居系统嵌入式项目实战&#xff0c;使用到stm32开发板&#xff0c;讯飞的离线语音识别&#xff0c;我们在此之前&#xff0c;我们先学习一些Linux系统的基本操作。 。 一、Linux简介 在嵌入式开发中&am…

matlab 二自由度操纵稳定性汽车模型

1、内容简介 略 19-可以交流、咨询、答疑 二自由度操纵稳定性汽车模型 二自由度、操纵稳定性、操纵动力学 2、内容说明 1 模型假设 忽略转向系的影响&#xff0c;以前、后轮转角作为输入&#xff1b;汽车只进行平行于地面的平面运动&#xff0c;而忽略悬架的作用&#xf…

从虚拟机下载开始的kubeSphere安装

目录 一、虚拟机安装 二、镜像下载安装 1、镜像下载 2、虚拟机创建 3、虚拟机系统安装 三、虚拟机配置 1、IP固定 2、配置yum阿里源 3、关闭防火墙 4、 关闭selinux 5、 禁止swap交换 6、内核参数修改 7、设置kubernetes源 四、docker安装 五、虚拟机分组 六、…

华为ensp:开启rstp修改根网桥

开启rstp 首先去三台交换机上进入系统视图分别开启rstp模式 stp mode rstp 三台交换机上都执行这个命令&#xff0c;就开启rstp模式了 修改根网桥 现在进入要被修改的交换机的系统视图 stp priority 4096 这里我们修改只要比别的交换机数值小就可以&#xff0c;最小的就是…

振南技术干货集:研发版本乱到“妈不认”? Git!(4)

注解目录 1、关于 Git 1.1Git 今生 (Git 和 Linux 的生父都是 Linus&#xff0c;振南给你讲讲当初关于 Git 的爱恨情愁&#xff0c;其背后其实是开源与闭源两左阵营的明争暗斗。) 1.2Git的爆发 (Git 超越时代的分布式思想。振南再给你讲讲旧金山三个年轻人创办 GitHub&…

(一)七种元启发算法(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;该算法主要受蜣螂的滚球、跳舞、觅食、偷窃和繁…

Java 简单实现一个 UDP 回显服务器

文章目录 UDP 服务端UDP 客户端实现效果UDP 服务端(实现字典功能)总结 UDP 服务端 package network;import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;public class UdpEchoServer {private Da…

如何判断从本机上传到服务器的文件数据内容是一致的?用md5加密算法!

问题场景 最近在帮导师做横向&#xff0c;我想把整个项目环境放到服务器中&#xff0c;需要把一个很大的数据文件传到服务器&#xff0c;传上去很方便&#xff0c;但是涉及到文件的压缩上传和服务器内解压环节&#xff0c;不是太确定文件在本机和服务器的数据内容是否一致。 解…

C/C++调试工具 - gdb详解

C/C调试工具 -gdb详解 1 简介 2 常用的命令 3 使用的条件 4 程序调试 4.1 直接运行程序 4.2 断点调试(在某一行) 4.3 断点调试(在函数入口处打断点) 5 调试core文件 5.1 生成core文件的方法 5.2 调试core文件 1 简介 GDB是Linux下非常好用且强大的调试工具。GD…

使用 Ruby 的 Nokogiri 库来解析

爬虫程序的主要目标是获取指定网站上的数据。在这里&#xff0c;我们将使用 Ruby 的 Nokogiri 库来解析 HTML&#xff0c;并使用 HTTParty 库来发送 HTTP 请求。下面是一个简单的示例&#xff0c;演示如何使用 Ruby 编写一个爬虫程序来爬取 1688 网站的数据。 require nokogir…

CentOS 7上Root用户使用ifconfig命令无结果

假如遇到如下情况&#xff0c;在CentOS 7上使用root用户运行ifconfig命令没有结果&#xff0c;如图所示&#xff1a; 这可能是因为缺少网络工具包或ifconfig命令不在root用户的PATH环境变量中。 可以尝试以下解决方法&#xff1a; 1.检查PATH环境变量&#xff1a;确保PATH环境…

域名无法访问了,如何找回浏览器的缓存

背景需求 双十一即将来临&#xff0c;这意味着我购买了三年低配的阿里服务器&#xff0c;而它的服务期限也即将到期。为了提前做好准备&#xff0c;我在一周前对静态网站进行了备份&#xff0c;并成功地使用了Vercel进行部署&#xff08;已经有了域名&#xff09;。相比于付费…

MySQL join原理及优化

MySQL的JOIN原理是基于索引和算法的。在执行JOIN查询时&#xff0c;MySQL会根据连接字段上的索引来查找匹配的记录。 这种算法在链接查询的时候&#xff0c;驱动表会根据关联字段的索引进行查找&#xff0c;当在索引上找到了符合的值&#xff0c;再回表进行查询&#xff0c;也就…

【STM32】TIM2的PWM:脉冲宽度调制--标准库

注意点&#xff1a; TIM_Period---->指要进行比较的值Compare TIM_Prescaler----> 指要进行分频的值【分频值/原始时钟值】 PWM是一种周期固定&#xff0c;脉宽可调整的输出波形。 https://www.cnblogs.com/brianblog/p/7117896.html 0.通用寄存器输出 1.捕获/比较通道…

redis的基本命令,并用netty操作redis(不使用springboot或者spring框架)就单纯的用netty搞。

大家如果对使用netty搞这些http请求什么的感兴趣的&#xff0c;可以参观我自己创建的这个项目。 nanshaws/nettyWeb: 复习一下netty&#xff0c;并打算做一个web项目出来 (github.com) Redis的基本命令包括&#xff1a; SET key value&#xff1a;设置指定key的值。 GET key…

Halcon WPF 开发学习笔记:HSmartWindowControlWPF正常加载

文章目录 加载问题相关文章彻底解决 加载问题 我们在WPF中使用Halcon的时候&#xff0c;会出现图片被拉伸的问题&#xff0c;需要拖动才可以解决&#xff0c;我网上找了好久&#xff0c;终于找到了如何成功解决这个问题。 相关文章 3.7 Halcon 窗体显示对象消失问题 【halcon】…
最新文章