• Web服务器与Apache(虚拟主机基于ip、域名和端口号)


    一、Web基础

    1.HTML概述

    HTML(Hypertext Markup Language)是一种标记语音,用于创建和组织Web页面的结构和内容,HTML是构建Web页面的基础,定义了页面的结构和内容,通过标记和元素来实现

    2.HTML文件结构

           网页的头部信息

           网页内容

    3.HTML基本标签

    基本标签含义
    HTML文档的根元素,包含文档的全部内容
    文档的头部,通常用于引入样式表、脚本以及设置文档的元信息
    </td><td style="text-align:center;">文档的标题,显示在浏览器的标题栏或标签页上</td></tr><tr><td style="text-align:center;"><body></td><td style="text-align:center;">文档的主体部分,包含页面上的可见内容</td></tr><tr><td style="text-align:center;"><h1>到<h6></td><td style="text-align:center;">标题标签,用于表示不同级别的标题,<h1>是最高级别的标题</td></tr><tr><td style="text-align:center;"><p></td><td style="text-align:center;">段落标签,用于表示一个段落</td></tr><tr><td style="text-align:center;"><a></td><td style="text-align:center;">链接标签,用于创建一个超链接,并指定链接的目标URL</td></tr><tr><td style="text-align:center;"><img></td><td style="text-align:center;">图像标签,用于插入图像到页面中,并指定图像的源文件路径</td></tr><tr><td style="text-align:center;"><ul>和<li></td><td style="text-align:center;">无序列表标签,用于创建一个无序列表和列表项</td></tr><tr><td style="text-align:center;"><ol>和<li></td><td style="text-align:center;">有序列表标签,用于创建一个有序列表和列表项</td></tr><tr><td style="text-align:center;"><div></td><td style="text-align:center;">通用的容器标签,用于分组和组织页面中的内容</td></tr><tr><td style="text-align:center;"><span></td><td style="text-align:center;">内联容器标签,用于对文本的一部分进行特殊处理,如应用样式或事件</td></tr></tbody></table></div> <h3><a name="t4"></a>4.URI和URL</h3> <p><strong>URI:统一资源标识,分为URL和URN</strong></p> <p><strong>URL:统一资源定位符,用于描述某服务器某特定资源位置</strong></p> <p><strong>URI和URL区别:</strong></p> <p><strong>定义范围:</strong>URI是一个广义的概念,用于标识和命名互联网上的资源,可以是URL、URN或其他形式,URL是URI的一种具体实现形式,用于资源的定位和访问</p> <p><strong>功能重点:</strong>URI强调资源的标识性,用于唯一标识和命名资源,URL则更注重资源的位置性,其中包含了定位和访问资源所需的详细信息</p> <h2><a name="t5"></a>二、静态资源和动态资源</h2> <p>静态资源和动态资源是两种常见的网络资源类型</p> <p>静态资源和动态资源的区别在于内容是否固定不变</p> <h3><a name="t6"></a>1.静态资源</h3> <p>静态资源指的是在服务器上保存的文件,其内容在请求和传输过程中不发生变化</p> <p>静态资源可以是图片、<a href="https://so.csdn.net/so/search?q=CSS%E6%A0%B7%E5%BC%8F%E8%A1%A8&spm=1001.2101.3001.7020" target="_blank" class="hl hl-1" data-report-view="{"spm":"1001.2101.3001.7020","dest":"https://so.csdn.net/so/search?q=CSS%E6%A0%B7%E5%BC%8F%E8%A1%A8&spm=1001.2101.3001.7020","extra":"{\"searchword\":\"CSS样式表\"}"}" data-report-click="{"spm":"1001.2101.3001.7020","dest":"https://so.csdn.net/so/search?q=CSS%E6%A0%B7%E5%BC%8F%E8%A1%A8&spm=1001.2101.3001.7020","extra":"{\"searchword\":\"CSS样式表\"}"}" data-tit="CSS样式表" data-pretit="css样式表">CSS样式表</a>、JavaScript文件、HTML文件等</p> <p>静态资源的请求一般是通过URL直接访问,当客户端发送请求时,服务器直接将这些文件返回给客户端,不进行任何处理</p> <h3><a name="t7"></a>2.动态资源</h3> <p>动态资源则是在服务器端通过执行脚本或程序生成的内容,需要占用服务器的资源</p> <p>服务器会根据请求中的参数和数据,执行相应的脚本或程序来生成动态内容,然后将生成的内容返回给客户端</p> <p>动态资源可以是动态网页、API接口等</p> <h2><a name="t8"></a>三、HTTP协议</h2> <h3><a name="t9"></a>1.HTTP协议</h3> <p>HTTP协议采用了请求/响应模型</p> <p>客户端向服务器发送一个请求,请求包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构</p> <p>服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上服务器信息、实体元信息以及可能的实体内容</p> <h3><a name="t10"></a>2.HTTP协议版本</h3> <div class="table-box"><table border="1" cellpadding="1" cellspacing="1" style="width:650px;"><tbody><tr><td>http 0.9</td><td>功能简陋,仅支持GET方法</td></tr><tr><td>http 1.0</td><td>相较以前版本可以支持POST、HEAD方法,支持HTML文件以外的其他类型,但不支持持久连接</td></tr><tr><td>http 1.1</td><td>支持持久连接,即在一个TCP连接里面完成多个http请求和响应,但是每个请求和响应是按照顺序一一对应的</td></tr><tr><td>http 2.0</td><td>http 2.0 支持完全多路复用,在一个连接里,客户端和浏览器都可以同时发送多个请求或回应,而且不用按照顺序一一对应( 也支持压缩,服务端主动推送)</td></tr></tbody></table></div> <h3><a name="t11"></a>3.HTTP方法作用</h3> <p>HTTP定义了一组请求方法,用于指定客户端对资源的操作方式,这些请求命令成为HTTP方法</p> <div class="table-box"><table border="1" cellpadding="1" cellspacing="1" style="width:500px;"><tbody><tr><td style="text-align:center;">方法</td><td style="text-align:center;">作用</td></tr><tr><td style="text-align:center;">GET</td><td style="text-align:center;"><span style="color:#4f4f4f;"><span style="background-color:#ffffff;">对服务器资源获取的</span></span><span style="color:#ff0000;">简单请求</span></td></tr><tr><td style="text-align:center;">PUT</td><td style="text-align:center;"><span style="color:#4f4f4f;"><span style="background-color:#f7f7f7;">向服务器</span></span><span style="color:#ff0000;">上传指定的资源</span><span style="color:#4f4f4f;"><span style="background-color:#f7f7f7;">,如果资源已存在,则替换为新的内容</span></span></td></tr><tr><td style="text-align:center;">POST</td><td style="text-align:center;"><span style="color:#4f4f4f;"><span style="background-color:#ffffff;">向服务器</span></span><span style="color:#ff0000;">提交数据</span></td></tr><tr><td style="text-align:center;">DELETE</td><td style="text-align:center;"><span style="color:#ff0000;">删除</span><span style="color:#4f4f4f;"><span style="background-color:#f7f7f7;">服务器上的某些资源</span></span></td></tr><tr><td style="text-align:center;">HEAD</td><td style="text-align:center;">请求页面的首部,获取资源的元信息</td></tr><tr><td style="text-align:center;">CONNECT</td><td style="text-align:center;">用于ssl隧道的基于代理的请求</td></tr><tr><td style="text-align:center;">OPTIONS</td><td style="text-align:center;">返回所有可用的方法,常用于跨域</td></tr><tr><td style="text-align:center;">TRACE</td><td style="text-align:center;">追踪 请求–响应的传输路径</td></tr></tbody></table></div> <p>1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求不会产生副作用。无论进行多少次操作,结果都是一样的</p> <p>2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,无论进行多少次PUT操作,其结果并没有不同</p> <p>3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,几乎目前所有的提交操作都是用POST请求的</p> <p>4、DELETE请求顾名思义,就是用来删除某一个资源的</p> <h3><a name="t12"></a>4.HTTP请求访问的完整过程</h3> <p>建立连接>接收请求>处理请求>访问资源>构建响应报文>发送响应报文>记录日志</p> <h3><a name="t13"></a>5.HTTP状态码</h3> <p>HTTP状态码<span style="color:#4d4d4d;"><span style="background-color:#ffffff;">是服务器在处理请求时返回给客户端的</span></span><span style="color:#ff0000;">数字代码</span><span style="color:#4d4d4d;"><span style="background-color:#ffffff;">,用于</span></span><span style="color:#ff0000;">表示请求的处理结果</span></p> <p><strong>HTTP协议状态码分类</strong></p> <div class="table-box"><table border="1" cellpadding="1" cellspacing="1" style="width:500px;"><tbody><tr><td style="text-align:center;"><strong>状态码首位</strong></td><td style="text-align:center;"><strong>范围</strong></td><td style="text-align:center;"><strong>含义</strong></td></tr><tr><td style="text-align:center;">1xx</td><td style="text-align:center;">100-101</td><td style="text-align:center;"><span style="color:#ff0000;">信息提示</span><span style="color:#4f4f4f;"><span style="background-color:#ffffff;">,表示请求已被接收,需要进一步处理</span></span></td></tr><tr><td style="text-align:center;">2xx</td><td style="text-align:center;">200-206</td><td style="text-align:center;"><span style="color:#ff0000;">成功</span><span style="color:#4f4f4f;"><span style="background-color:#f7f7f7;">,表示请求已成功处理</span></span></td></tr><tr><td style="text-align:center;">3xx</td><td style="text-align:center;">300-305</td><td style="text-align:center;"><span style="color:#ff0000;">重定向</span><span style="color:#4f4f4f;"><span style="background-color:#ffffff;">,表示需要进一步的操作以完成请求</span></span></td></tr><tr><td style="text-align:center;">4xx</td><td style="text-align:center;">400-415</td><td style="text-align:center;"><span style="color:#ff0000;">客户端错误</span><span style="color:#4f4f4f;"><span style="background-color:#f7f7f7;">,表示客户端发送的请求有错误</span></span></td></tr><tr><td style="text-align:center;">5xx</td><td style="text-align:center;">500-505</td><td style="text-align:center;"><span style="color:#ff0000;">服务器错误</span><span style="color:#4f4f4f;"><span style="background-color:#ffffff;">,表示服务器在处理请求时发生了错误</span></span></td></tr></tbody></table></div> <p><strong>HTTP协议常用的状态码</strong></p> <div class="table-box"><table border="1" cellpadding="1" cellspacing="1" style="width:600px;"><tbody><tr><td style="text-align:center;width:80px;"><strong>状态码</strong></td><td style="text-align:center;width:518px;"><strong>含义</strong></td></tr><tr><td style="text-align:center;width:80px;">200</td><td style="text-align:center;width:518px;">一切正常</td></tr><tr><td style="text-align:center;width:80px;">301</td><td style="text-align:center;width:518px;">永久重定向</td></tr><tr><td style="text-align:center;width:80px;">302</td><td style="text-align:center;width:518px;">临时重定向</td></tr><tr><td style="text-align:center;width:80px;">307</td><td style="text-align:center;width:518px;">浏览器内部重定向</td></tr><tr><td style="text-align:center;width:80px;">401</td><td style="text-align:center;width:518px;">用户名或密码错误</td></tr><tr><td style="text-align:center;width:80px;">403</td><td style="text-align:center;width:518px;">禁止访问(客户端IP地址被拒绝)</td></tr><tr><td style="text-align:center;width:80px;">404</td><td style="text-align:center;width:518px;">请求的资源在服务器上不存在</td></tr><tr><td style="text-align:center;width:80px;">414</td><td style="text-align:center;width:518px;">请求URL头部过长</td></tr><tr><td style="text-align:center;width:80px;">500</td><td style="text-align:center;width:518px;">服务器内部错误。比如脚本错误,编程语言语法错误</td></tr><tr><td style="text-align:center;width:80px;">502</td><td style="text-align:center;width:518px;">无效网关</td></tr><tr><td style="text-align:center;width:80px;">503</td><td style="text-align:center;width:518px;">服务器暂时无法处理请求,通常用于服务器维护或过载</td></tr><tr><td style="text-align:center;width:80px;">504</td><td style="text-align:center;width:518px;">网关请求超时。程序执行时间过长导致响应超时,例如程序需要执行20秒,而nginx最大响应等待时间为10秒,这样就会出现超时</td></tr></tbody></table></div> <p><strong>产生502(无效网关)的原因:</strong></p> <p>1.数据包没有送到网卡,网络问题</p> <p>2.数据包送进去了(交换机能抓到包),但是网卡没收到,网卡问题或防火墙问题</p> <p>3.网卡接收到了,处理不了,服务问题。(比如服务器当前连接太多,响应太慢;页面素材太多,带宽不够。)</p> <h3><a name="t14"></a>6.HTTP的请求报文和响应报文</h3> <h4><a name="t15"></a>1.请求报文</h4> <blockquote> <p>curl  -v  192.168.7.20 |head   ##从此服务器获取内容</p> </blockquote> <p><img alt="" height="247" src="https://1000bd.com/contentImg/2024/07/08/1a08813ffbe5ef71.png" ></p> <blockquote> <p>#状态行</p> <p>>GET / HTTP/1.1</p> <p>#HTTP GET请求,即获取指定路径的内容,请求的路径为根路径("/"),表示请求服务器的默认页面</p> <p> <p>#头部字段</p> <p>>User-Agent:curl/7.29.0</p> <p>#指定客户端使用的User-Agent,该请求由curl/7.29.0发送</p> <p> <p>>Host:192.168.7.20</p> <p>#指定了要访问的服务器的主机地址</p> <p> <p>>Accept:*/*</p> <p>#指定了客户端可以接受的响应内容的类型,表示客户端可以接受任何类型的内容</p> </blockquote> <h4><a name="t16"></a>2.响应报文</h4> <blockquote> <p>curl  -v  192.168.7.20 |head   ##从此服务器获取内容</p> </blockquote> <p><img alt="" height="450" src="https://1000bd.com/contentImg/2024/07/08/98427e8144d84e85.png" ></p> <blockquote> <p>#响应状态行</p> <p>< HTTP/1.1 403 Forbidden</p> <p>#表示请求被拒绝,状态码403表示禁止访问</p> <p> <p>#头部字段</p> <p><Date:Fri,21 Jun 2024 06:30:18 GMT</p> <p>#表示响应的日期和时间</p> <p><Server:Apache/2.4.6 (CentOS)</p> <p>#表示服务器正在使用的软件名称和版本</p> <p><Last-Modified:Thu,16 Oct 2014 13:20:58 GMT</p> <p>#表示所请求资源的最后修改日期和时间</p> <p><ETag:"1321-5058a1e728280"</p> <p>#表示所请求资源的实体标签</p> <p><Accept-Ranges:bytes</p> <p>#服务器是否支持断点续传</p> <p><Content-Length:4897</p> <p>#响应实体主体的长度</p> <p><Content-Type:text/html;charset=UTF-8</p> <p>#实体主体的类型和字符编码,表示响应内容是以UTF-8编码的HTML文本</p> </blockquote> <h3><a name="t17"></a>7.HTTP连接优化</h3> <p>1.并行连接:<span style="color:#4d4d4d;"><span style="background-color:#ffffff;">并行连接通过</span></span><span style="color:#ff0000;">同时建立多个连接</span><span style="color:#4d4d4d;"><span style="background-color:#ffffff;"> ,使得客户端可以并发地发送多个请求,以提高并发性和响应速度</span></span></p> <p>2.<span style="color:#ff0000;">持久连接</span><span style="color:#4d4d4d;"><span style="background-color:#ffffff;"> :持久连接允许客户端和服务器之间在</span></span><span style="color:#ff0000;">单个连接上发送多个HTTP请求和响应</span><span style="color:#4d4d4d;"><span style="background-color:#ffffff;"> ,而不是每个请求都要重新建立连接</span></span></p> <p>3.<span style="color:#4d4d4d;"><span style="background-color:#ffffff;">管道化连接:管道化连接是一种</span></span><span style="color:#ff0000;">在持久连接上发送多个请求而无需等待服务器响应</span><span style="color:#4d4d4d;"><span style="background-color:#ffffff;">的机制</span></span></p> <h2><a name="t18"></a>四、httpd</h2> <h3><a name="t19"></a>1.安装</h3> <p><img alt="" height="156" src="https://1000bd.com/contentImg/2024/07/08/429f9c65dfdbd3d5.png" ></p> <h3><a name="t20"></a>2.httpd相关文件配置</h3> <blockquote> <p>#主配置文件</p> <p>/etc/httpd/conf/httpd.conf</p> <p> <p>#子配置文件</p> <p>/etc/httpd/conf.d/*.conf</p> <p> <p>#模块加载的配置文件</p> <p>/etc/httpd/conf.d/conf.modules.d/</p> <p> <p>#检查配置语法</p> <p>httpd -t或apache2  -t</p> <p> <p>#站点网页文档根目录</p> <p>/var/www/html</p> </blockquote> <h3><a name="t21"></a>3.服务单元文件和主服务器程序文件</h3> <blockquote> <p>服务单元文件</p> <p>/usr/lib/systemd/system/httpd.service</p> <p>配置文件:/etc/sysconfig/httpd</p> <p> <p>主服务器程序文件</p> <p>/usr/sbin/httpd</p> </blockquote> <h3><a name="t22"></a>4.模块文件</h3> <blockquote> <p>/etc/httpd/modules</p> <p> <p>/usr/lib64/httpd/modules</p> </blockquote> <h3><a name="t23"></a>5.httpd服务控制和启动(命令部分)</h3> <blockquote> <p>#开机自启动/开机自动关闭httpd服务</p> <p>systemctl enable |disable httpd.service</p> </blockquote> <blockquote> <p>开启httpd服务的三种方式(任选其一)</p> <p>systemctl start httpd.service</p> <p>apachectl start</p> <p>service httpd start</p> </blockquote> <blockquote> <p>重启httpd服务的三种方式(任选其一)</p> <p>systemctl restart httpd.service</p> <p>apachectl restart</p> <p>service httpd restart</p> </blockquote> <blockquote> <p>停止httpd服务的三种方式(任选其一)</p> <p>systemctl stop httpd.service</p> <p>apachectl stop</p> <p>service httpd stop</p> </blockquote> <blockquote> <p>查看httpd服务的运行状态</p> <p>systemctl status httpd</p> </blockquote> <blockquote> <p>配置文件语法检查的两种方式(任选其一)</p> <p>apachectl configtest</p> <p>service httpd configtest</p> </blockquote> <h2><a name="t24"></a>五、Apache的三种工作模式</h2> <h3><a name="t25"></a>1.Worker模式</h3> <p> 工作线程(Worker)模式适用于资源利用率高的场景</p> <p>1.Apache在启动时会创建一组预定义数量的线程池<br> 2.每个线程都可以处理多个请求,线程之间共享服务器的内存和资源<br> 3.当一个请求到达服务器时,一个空闲的线程将被选择来处理该请求<br> 4.线程可能会处理多个请求,通过线程池重用来更高效地处理请求<br> 5.这种模式下需要注意线程安全的问题,以确保多个线程间的数据访问不会导致冲突</p> <h3><a name="t26"></a>2.Event模式</h3> <p>事件驱动(Event MPM)模式适用于高并发场景</p> <p>1.在事件驱动模式下,Apache使用I/O多路复用(如epoll或kqueue)来监听多个连接<br> 2.当一个连接有数据到达时,Apache将发出事件通知,表示该连接有可读数据<br> 3.Apache将事件分发给一个空闲的工作线程来处理请求<br> 4.工作线程处理请求的过程通常是非阻塞的,通过事件驱动方式读取数据和发送响应<br> 5.这种模式下可以处理大量的并发请求,因为它不需要为每个请求创建一个新的进程或线程</p> <h3><a name="t27"></a>3.Pre-Fork模式</h3> <p>预产生(Pre-Fork)模式适用于稳定性要求高的场景</p> <p>1.Apache在启动时会创建一组预定义数量的子进程(称为工作进程)<br> 2.每个工作进程都是独立的,有自己的内存空间和资源<br> 3.当一个请求到达服务器时,主进程选择一个空闲的工作进程来接受该请求<br> 4.选中的工作进程处理该请求,生成响应并将其发送回客户端<br> 5.这种模式下每个工作进程只能处理一个请求,处理完请求后会继续等待下一个请求</p> <h2><a name="t28"></a>六、Cookie和Session</h2> <p>Cookie和Session都用于解决HTTP协议无状态问题</p> <h3><a name="t29"></a>1.Cookie</h3> <p>Cookie是服务器在用户的浏览器中存储的小型文本文件。当用户访问一个网站时,服务器可以通过HTTP响应的Set-Cookie标头将一个或多个Cookie发送给浏览器。浏览器会将这些Cookie存储在用户的计算机上,并在以后的请求中将它们发送回服务器。每个Cookie都包括一个名称、一个值和一些可选的属性,如过期时间、域名、路径等。服务器可以使用Cookie来存储用户的偏好设置、会话标识符、购物车数据等。浏览器会在每次请求中自动发送与特定域名相关联的Cookie,使得服务器能够识别用户</p> <h3><a name="t30"></a>2.Session</h3> <p>Session是在服务器端存储用户状态的一种机制。当用户首次访问一个网站时,服务器会为该用户创建一个唯一的会话标识符(Session ID)。这个标识符通常被存储在Cookie中,但也可以通过其他方式(如URL参数)进行传递。服务器使用Session来存储用户信息和其他相关数据。在每个请求中,浏览器会将Session ID作为Cookie发送给服务器,使得服务器能够识别并恢复与该用户相关联的会话数据。Session数据通常存储在服务器的内存或持久化存储中</p> <h2><a name="t31"></a>七、httpd配置</h2> <p><strong><span style="background-color:#ffffff;">httpd虚拟主机的作用是</span>通过一个物理服务器来托管多个域名或网站<span style="background-color:#ffffff;">,实现资源共享、个性化配置和多域名指向不同网站的功能,提高服务器资源利用率和降低成本</span></strong></p> <h3><a name="t32"></a>1.虚拟主机(基于ip地址)</h3> <p>原理:每个虚拟主机分配一个唯一的IP地址,并通过服务器软件(httpd)来指定每个虚拟主机使用的IP地址,客户机访问服务器时,服务器会根据客户机的IP地址,在配置文件中寻找对应关系,根据对应关系跳转</p> <p><img alt="" height="247" src="https://1000bd.com/contentImg/2024/07/08/ed242cc194043b48.png" ></p> <p><strong>服务端配置:</strong></p> <blockquote> <p><strong>进入主站点配置文件</strong></p> <p>vim /etc/httpd/conf/httpd.conf</p> <p> <p><strong>#开启域名服务</strong></p> <p>ServerName www.example.com:80</p> <p> <p><strong>#指定主站点到/data</strong></p> <p>DocumentRoot "/data"<br> <Directory "/data"><br>     Require all granted<br> </Directory></p> </blockquote> <p><img alt="" height="192" src="https://1000bd.com/contentImg/2024/07/08/950317c48048a2ae.png" ></p> <p><img alt="" height="382" src="https://1000bd.com/contentImg/2024/07/08/8a245d28574948d2.png" ></p> <blockquote> <p><strong>#复制虚拟主机模板文件到/etc/httpd/conf.d并改名为xuni.conf</strong></p> <p>cp /usr/share/doc/httpd-2.4.6/httpd-vhosts.conf  /etc/httpd/conf.d/xuni.conf</p> </blockquote> <p><img alt="" height="108" src="https://1000bd.com/contentImg/2024/07/08/4bd1941cc8b9f811.png" ></p> <blockquote> <p><strong>#移动到/etc/httpd/conf.d目录下编辑xuni.conf配置</strong></p> <p>cd /etc/httpd/conf.d</p> <p> <p>vim  xuni.conf</p> <p><VirtualHost 192.168.7.10:80><br>     DocumentRoot "/data/eva"<br>     ServerName www.eva.com<br>     ErrorLog "/var/log/httpd/dummy-host.example.com-error_log"<br>     CustomLog "/var/log/httpd/dummy-host.example.com-access_log" common<br> </VirtualHost></p> <p><VirtualHost 192.168.7.99:80><br>     DocumentRoot "/data/esdeath"<br>     ServerName www.esdeath.com<br>     ErrorLog "/var/log/httpd/dummy-host2.example.com-error_log"<br>     CustomLog "/var/log/httpd/dummy-host2.example.com-access_log" common<br> </VirtualHost></p> <p><Directory "/data"><br>     Require all granted<br> </Directory></p> </blockquote> <p><img alt="" height="97" src="https://1000bd.com/contentImg/2024/07/08/4a9d9d50079dbff1.png" ></p> <p><img alt="" height="382" src="https://1000bd.com/contentImg/2024/07/08/48439278ba0a1ae5.png" ></p> <p><strong>#建立data文件下的esdeath和eva并输入内容,重启httpd配置文件</strong></p> <p><img alt="" height="159" src="https://1000bd.com/contentImg/2024/07/08/4f15a4ba978849c9.png" ></p> <blockquote> <p>添加虚拟主机的网卡:有几台虚拟主机加几个</p> <p>ipconfig ens33:0 192.168.7.11/24</p> </blockquote> <p><img alt="" height="529" src="https://1000bd.com/contentImg/2024/07/08/422a872ca95f49f2.png" ></p> <p><strong>此时拿客户端访问服务端ip是否出现内容:</strong></p> <p><img alt="" height="127" src="https://1000bd.com/contentImg/2024/07/08/339b6c1e0ee5c97b.png" ></p> <h3><a name="t33"></a>2.虚拟主机(基于域名)</h3> <blockquote> <p>cd /etc/httpd/conf.d</p> <p> <p>vim xuni.conf</p> <p>IP、端口相同,域名不同</p> </blockquote> <p><img alt="" height="379" src="https://1000bd.com/contentImg/2024/07/08/13f6f8443a999f15.png" ></p> <p><strong> 在客户机编辑本地hosts文件,添加地址映射:</strong></p> <p><img alt="" height="127" src="https://1000bd.com/contentImg/2024/07/08/b1e8f4887eb491c9.png" ></p> <p><strong>用客户机访问服务端,查看是否成功:</strong></p> <p><img alt="" height="130" src="https://1000bd.com/contentImg/2024/07/08/b6c2c5eae834ae9a.png" ></p> <h3><a name="t34"></a>3.虚拟主机(基于端口)</h3> <blockquote> <p>cd /etc/httpd/conf.d</p> <p> <p>vim xuni.conf</p> <p>IP、域名相同,端口号不同</p> <p>添加监听8080端口</p> <p>listen 8080</p> </blockquote> <p><img alt="" height="447" src="https://1000bd.com/contentImg/2024/07/08/4e7d96229b010a49.png" ></p> <p><strong>拿客户机curl服务端是否成功</strong></p> <p><img alt="" height="138" src="https://1000bd.com/contentImg/2024/07/08/ee1203318b44a4b8.png" ></p> </div> </div> </li> <li class="list-group-item ul-li"> <b>相关阅读:</b><br> <nobr> <a href="/Article/Index/1003787">【g2o】g2o学习笔记 BA相关</a> <br /> <a href="/Article/Index/1516576">线上又出问题了!又是特殊场景,哎呀,当时怎么没有想到!</a> <br /> <a href="/Article/Index/1558187">卡口车辆智能检索系统</a> <br /> <a href="/Article/Index/919783">spring boot 一个极简单的 demo 示例</a> <br /> <a href="/Article/Index/1070315">1,2,4,5-四嗪-巯基反应Methyltetrazine-Maleimide/PEG2-maleimide/PEG5-Maleimide的制备</a> <br /> <a href="/Article/Index/1564960">动手学深度学习——求导</a> <br /> <a href="/Article/Index/1397981">何为心理承受能力?如何提高心理承受能力?</a> <br /> <a href="/Article/Index/954547">【日拱一卒行而不辍20220921】自制操作系统</a> <br /> <a href="/Article/Index/855041">JS备忘录</a> <br /> <a href="/Article/Index/1650195">Vue + Nodejs + socket.io 实现聊天</a> <br /> </nobr> </li> <li class="list-group-item from-a mb-2"> 原文地址:https://blog.csdn.net/EsDeath_99/article/details/139188662 </li> </ul> </div> <div class="col-lg-4 col-sm-12"> <ul class="list-group" style="word-break:break-all;"> <li class="list-group-item ul-li-bg" aria-current="true"> 最新文章 </li> <li class="list-group-item ul-li"> <nobr> <a href="/Article/Index/1484446">攻防演习之三天拿下官网站群</a> <br /> <a href="/Article/Index/1515268">数据安全治理学习——前期安全规划和安全管理体系建设</a> <br /> <a href="/Article/Index/1759065">企业安全 | 企业内一次钓鱼演练准备过程</a> <br /> <a href="/Article/Index/1485036">内网渗透测试 | Kerberos协议及其部分攻击手法</a> <br /> <a href="/Article/Index/1877332">0day的产生 | 不懂代码的"代码审计"</a> <br /> <a href="/Article/Index/1887576">安装scrcpy-client模块av模块异常,环境问题解决方案</a> <br /> <a href="/Article/Index/1887578">leetcode hot100【LeetCode 279. 完全平方数】java实现</a> <br /> <a href="/Article/Index/1887512">OpenWrt下安装Mosquitto</a> <br /> <a href="/Article/Index/1887520">AnatoMask论文汇总</a> <br /> <a href="/Article/Index/1887496">【AI日记】24.11.01 LangChain、openai api和github copilot</a> <br /> </nobr> </li> </ul> <ul class="list-group pt-2" style="word-break:break-all;"> <li class="list-group-item ul-li-bg" aria-current="true"> 热门文章 </li> <li class="list-group-item ul-li"> <nobr> <a href="/Article/Index/888177">十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!</a> <br /> <a href="/Article/Index/797680">奉劝各位学弟学妹们,该打造你的技术影响力了!</a> <br /> <a href="/Article/Index/888183">五年了,我在 CSDN 的两个一百万。</a> <br /> <a href="/Article/Index/888179">Java俄罗斯方块,老程序员花了一个周末,连接中学年代!</a> <br /> <a href="/Article/Index/797730">面试官都震惊,你这网络基础可以啊!</a> <br /> <a href="/Article/Index/797725">你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法</a> <br /> <a href="/Article/Index/797702">心情不好的时候,用 Python 画棵樱花树送给自己吧</a> <br /> <a href="/Article/Index/797709">通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!</a> <br /> <a href="/Article/Index/797716">13 万字 C 语言从入门到精通保姆级教程2021 年版</a> <br /> <a href="/Article/Index/888192">10行代码集2000张美女图,Python爬虫120例,再上征途</a> <br /> </nobr> </li> </ul> </div> </div> </div> <!-- 主体 --> <!--body结束--> <!--这里是footer模板--> <!--footer--> <nav class="navbar navbar-inverse navbar-fixed-bottom"> <div class="container"> <div class="row"> <div class="col-md-12"> <div class="text-muted center foot-height"> Copyright © 2022 侵权请联系<a href="mailto:2656653265@qq.com">2656653265@qq.com</a>    <a href="https://beian.miit.gov.cn/" target="_blank">京ICP备2022015340号-1</a> </div> <div style="width:300px;margin:0 auto; padding:0px 5px;"> <a href="/regex.html">正则表达式工具</a> <a href="/cron.html">cron表达式工具</a> <a href="/pwdcreator.html">密码生成工具</a> </div> <div style="width:300px;margin:0 auto; padding:5px 0;"> <a target="_blank" href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=11010502049817" style="display:inline-block;text-decoration:none;height:20px;line-height:20px;"> <img src="" style="float:left;" /><p style="float:left;height:20px;line-height:20px;margin: 0px 0px 0px 5px; color:#939393;">京公网安备 11010502049817号</p></a> </div> </div> </div> </div> </nav> <!--footer--> <!--footer模板结束--> <script src="/js/plugins/jquery/jquery.js"></script> <script src="/js/bootstrap.min.js"></script> <!--这里是scripts模板--> <!--scripts模板结束--> </body> </html>