httpd服务器(理论篇)
APACHE服务器
Apache服务器的设置文件位于/usr/local/apache/conf/目录下,传统上使用三个配置文件httpd.conf,access.conf和srm.conf,来配置Apache服务器的行为。
httpd.conf提供了最基本的服务器配置,是对守护程序httpd如何运行的技术描述;srm.conf是服务器的资源映射文件,告诉服务器各种文件的MIME类型,以及如何支持这些文件;access.conf用于配置服务器的访问权限,控制不同用户和计算机的访问限制;这三个配置文件控制着服务器的各个方面的特性,因此为了正常运行服务器便需要设置好这三个文件。
除了这三个设置文件之外,Apache还使用mime.types文件用于标识不同文件对应的MIME类型,magic文件设置不同MIME类型文件的一些特殊标识,使得Apache 服务器从文档后缀不能判断出文件的MIME 类型时,能通过文件内容中的这些特殊标记来判断文档的MIME类型。
bash-2.02$ ls -l /usr/local/apache/conftotal 100-rw-r--r-- 1 root wheel 348 Apr 16 16:01 access.conf-rw-r--r-- 1 root wheel 348 Feb 13 13:33 access.conf.default-rw-r--r-- 1 root wheel 30331 May 26 08:55 httpd.conf-rw-r--r-- 1 root wheel 29953 Feb 13 13:33 httpd.conf.default-rw-r--r-- 1 root wheel 12441 Apr 19 15:42 magic-rw-r--r-- 1 root wheel 12441 Feb 13 13:33 magic.default-rw-r--r-- 1 root wheel 7334 Feb 13 13:33 mime.types-rw-r--r-- 1 root wheel 383 May 13 17:01 srm.conf-rw-r--r-- 1 root wheel 357 Feb 13 13:33 srm.conf.default事实上当前版本的Apache将原来httpd.conf、srm.conf与access.conf中的所有配置参数均放在了一个配置文件httpd.conf中,只是为了与以前的版本兼容的原因(使用这三个设置文件的方式来源于NCSA-httpd),才使用三个配置文件。
Apache配置详解
Apache与代理服务器代理服务器是位于客户和客户要访问的服务器之间的系统。
当客户机使用URL请求访问远程资源时,代理服务器接受该请求并取得该资源以满足客户机的请求。
在通常情况下,代理服务器是客户机的服务器,同时也是远程服务器的客户。
代理服务器可以在自己的缓冲区中存储被请求的内容,当这些信息再次被请求的时候,代理服务器就无需再从远程服务器上取了,这样代理服务器就减轻了网络的瓶颈问题。
Apache可以配置成为代理服务器。
一、前向代理服务器和逆向代理服务器1.前向代理服务器前向代理服务器通常位于用户主机和要访问的远程网络之间。
它从远程服务器取得所要求的资源,然后返回给用户,同时存在磁盘上,以供下次使用。
在这种情况下,客户端的主机知道它们正在使用代理服务器,因为每个主机都必须配置为使用代理服务器。
例如,必须告诉WWW浏览器使用代理服务器,它才能使用代理服务器。
所有的远程请求都通过代理服务器传输。
这类代理服务器也称为缓冲代理服务器。
逆向服务器也可以缓冲数据,但它的作用愉好与前向服务器相反。
2.逆向代理服务器逆向代理服务器位于互联网资源前面,逆向服务器从原始服务器找到被请求的资源,并反它返回给用户主机。
与前向代理服务器不同的是,逆向代理服务器的用户并不知道它们连接的是代理服务器而不是资源服务器本身。
其结构如下图所示:二、配置代理服务器为了允许Apache作为代理服务器,需要将ProxyRequests设为On,然后根据你希望代理服务器做什么而增加什么附加配置。
无论你希望做什么,你所选的代理配置都应该放入一个特殊?lt;Directory>容器中。
<Directory proxy:*>…</Directory>实例一:将私有IP网连到互联网假设私有网上只有一台计算机被分配了互联网上合法的IP地址,这台计算机运行Apache代理服务器,ProxyRequest设置为On,并且不需要附加其他配置,所有请求均可由这台代理服务器代理服务。
Apache的工作原理
Apache的工作原理Apache是一款开源的跨平台Web服务器软件,广泛应用于互联网和企业内部网络中。
它的工作原理是通过接收客户端的HTTP请求,并将请求的资源返回给客户端。
下面将详细介绍Apache的工作原理。
1. 客户端发送HTTP请求:当用户在浏览器中输入网址或者点击链接时,浏览器会向服务器发送HTTP 请求。
这个请求包含了请求的资源路径、请求方法(GET、POST等)以及其他相关的请求头信息。
2. Apache接收请求:当Apache服务器收到客户端的HTTP请求后,它会根据请求的资源路径来确定要处理的请求。
Apache服务器可以同时处理多个请求,并且可以配置多个虚拟主机来处理不同的域名或者IP地址对应的请求。
3. 请求处理:Apache会根据请求的资源路径找到对应的文件或者处理程序。
如果请求的是静态资源(如HTML、CSS、图片等),Apache会直接返回该文件给客户端。
如果请求的是动态资源(如PHP、ASP等),Apache会将请求转发给相应的处理程序进行处理。
4. 动态资源处理:当请求的是动态资源时,Apache会将请求转发给配置的处理程序(如PHP解释器),处理程序会解析请求,并生成动态内容。
处理程序将生成的动态内容返回给Apache,然后Apache将其返回给客户端。
5. 响应返回给客户端:Apache将处理后的响应返回给客户端。
响应包含了HTTP状态码、响应头信息以及响应的内容。
客户端浏览器接收到响应后,会根据响应的内容来渲染页面或者执行其他操作。
6. 连接管理:Apache还负责管理客户端与服务器之间的连接。
它可以通过配置文件来控制最大并发连接数、连接超时时间等参数,以保证服务器的稳定性和性能。
7. 日志记录:Apache会记录每一个请求的访问日志,包括请求的时间、来源IP地址、请求的资源路径等信息。
这些日志对于网站的访问分析和故障排查非常有匡助。
总结:Apache的工作原理是基于请求-响应模式的。
常见的服务器软件及其功能介绍
常见的服务器软件及其功能介绍随着互联网的快速发展,服务器已经成为了现代社会中不可或缺的一部分。
服务器软件作为服务器的核心组件,具有各种不同的功能,用于处理和管理数据、提供网络服务等。
本文将介绍一些常见的服务器软件及其功能。
一、Apache HTTP ServerApache HTTP Server(简称Apache)是一个开源的Web服务器软件。
作为最流行的Web服务器软件之一,Apache具有多个功能。
首先,它能够处理和响应HTTP请求,将网页内容发送给用户的浏览器。
其次,Apache支持虚拟主机,能够在单个服务器中托管多个网站。
此外,Apache还提供了安全性配置选项,可用于保护网站免受恶意攻击。
二、NginxNginx是另一个广泛使用的开源Web服务器软件。
相比于Apache,Nginx对系统资源的要求较低,能够更高效地处理大量并发请求。
除了作为Web服务器,Nginx还可用作反向代理服务器,将请求转发给后端的应用程序服务器。
此外,Nginx还支持负载均衡和高可用性配置,能够提供稳定可靠的服务。
三、Microsoft Internet Information Services(IIS)IIS是由微软开发的Web服务器软件。
它是Windows操作系统的一部分,为Windows服务器提供了强大的网站和应用程序托管能力。
IIS支持多种协议,包括HTTP、HTTPS等,可用于搭建各种类型的网站。
此外,IIS还提供了高级的管理工具和安全性特性,方便管理员对网站进行管理和保护。
四、MySQLMySQL是一种常见的关系型数据库管理系统,被广泛用于存储和管理数据。
作为服务器软件,MySQL能够提供可靠的数据库服务。
它支持多用户访问,可以同时处理多个客户端的查询请求。
MySQL还提供了丰富的数据库管理功能,例如数据备份、恢复和性能优化等。
它是许多Web应用程序和服务的首选数据库。
五、MongoDBMongoDB是一种流行的NoSQL数据库,为开发人员提供了灵活的数据存储选项。
ApacheTomcat服务器架构分析
ApacheTomcat服务器架构分析Apache Tomcat服务器架构分析Apache Tomcat(简称Tomcat)是一个开源的Java Servlet容器,也是Java Server Pages(JSP)规范的一个实现。
本文将对Tomcat服务器的架构进行分析。
一、概述Tomcat基于Java语言开发,提供了一个轻量级的Web服务器环境,可用于运行Java Web应用程序。
其架构主要包括以下几个组件:1. Catalina:负责处理Servlet请求和管理Servlet的生命周期。
它是Tomcat的核心组件,通过HTTP Connector和Servlet容器(包括Engine、Host和Context)与客户端进行通信。
2. Coyote:作为Tomcat的HTTP/1.1协议的处理器,处理传入的HTTP请求,将请求转发给Catalina进行处理。
3. Jasper:用于编译JSP页面,将其转换成可执行的Servlet。
Jasper也负责处理JSP页面的热部署、预编译和缓存等功能。
4. Cluster:用于实现Tomcat服务器的集群部署,提供负载均衡和故障容错的功能。
5. Security:提供安全机制,用于认证和授权用户,保护Web应用程序的安全性。
6. Manager:用于管理Web应用程序的生命周期,支持部署、启动、停止和重载Web应用程序。
二、Tomcat的架构详解1. Connector层:Connector用于处理传输层和应用层之间的通信,主要负责IO操作,提供了多个Connector实现,包括HTTP Connector、AJP Connector、WebSocket Connector等。
- HTTP Connector:用于处理HTTP/1.1协议的请求和响应,支持多种处理模式,如阻塞模式和非阻塞模式。
- AJP Connector:用于与Apache Web服务器进行通信,通过AJP协议来传输请求和响应数据。
Apache的工作原理
Apache的工作原理Apache是一个开源的、跨平台的Web服务器软件,它是目前世界上最流行的Web服务器之一。
Apache的工作原理涉及到网络通信、请求处理、模块管理等多个方面。
下面将详细介绍Apache的工作原理。
1. 网络通信Apache通过监听一个特定的端口(默认为80)来接收客户端的HTTP请求。
当客户端发送一个HTTP请求到Apache服务器时,Apache会通过网络套接字接收到该请求。
Apache使用TCP/IP协议与客户端进行通信,建立起一个持久的连接。
2. 请求处理一旦Apache接收到客户端的请求,它会对请求进行解析和处理。
首先,Apache会解析HTTP请求头,获取请求的方法(GET、POST等)、URL、协议版本等信息。
然后,Apache会根据URL映射到相应的虚拟主机(Virtual Host)或者目录,并将请求交给相应的处理模块进行处理。
3. 模块管理Apache的核心功能是由一系列模块来实现的,这些模块可以通过配置文件进行加载和管理。
Apache支持静态模块和动态模块。
静态模块是在编译时静态链接到Apache的可执行文件中,而动态模块可以在运行时通过加载器动态加载。
模块可以提供各种功能,如认证、日志记录、缓存、重定向等。
4. 请求处理流程一旦请求被分配到相应的处理模块,Apache会按照一定的处理流程对请求进行处理。
通常,处理流程包括以下几个阶段:- 访问控制阶段:Apache会检查请求的访问权限,根据配置文件中的规则进行访问控制,如IP过滤、基于用户的认证等。
- URL重写阶段:Apache可以根据配置文件中的规则对URL进行重写,将URL映射到实际的文件或者处理程序。
- 资源获取阶段:Apache会根据请求的URL找到对应的文件或者处理程序,并将请求转发给相应的模块进行处理。
- 响应生成阶段:处理模块会根据请求的内容生成响应,包括HTTP响应头和响应体。
Apache会将响应发送给客户端。
超详细的apache httpd配置文档
Apache服务器配置查看网站所使用的服务器可以使用这个命令:curl –I 域名或ip 。
修改httpd监听的端口首先查看httpd默认监听的端口,netstat –tunalep | grep httpd ,得知其侦听的端口为80。
修改配置文件/etc/httpd/conf/httpd.conf中的LISTEN=8080;重启服务/etc/init.d/httpd restart,用浏览器访问,无法看到主页;查看监听端口netstat –tunalep | grep httpd 发现端口为8080,浏览器访问服务器主机在指定端口为8080可以访问,即http://xxx.xxx.xxx:8080。
修改默认发布目录建立发布目录,mkdir /www/html,并编辑测试主页index.html;修改目录selinux安全上下文chcon –t httpd_content_t /www/html –R;修改配置文件vsftpd.conf,将第292行改为DocumetnRoot “/www/html”配置用户个人网站个人网站是指在主机上拥有账号的用户可以通过apache服务器发布自己个人目录中的文件,其访问方式为http://<主机名>/~<用户名>/。
例如,在192.168.0.1的主机上有一个test用户,则可以通过http://192.168.0.1/~test/的形式访问test用户个人目录/home/test目录中中的一个目录,即test个人目录中的一个目录成了一个网站的主目录。
配置这个网站需要加载模块mod_usedir,在vsftpd.conf文件360行左右。
<IfModule mo_userdir.c>#UserDir disabled #注释掉此行UserDir public_html #默认个人网站的发布目录</IfModule>按配置文件httpd.conf中的设置,建立用户个人网站的发布目录,默认为public_html,mkdir /home/test/public_html,新建index.html测试主页;修改用户家目录的权限,加上可执行权限,chomod +x /home/test/;修改httpd的布尔值,setsebool –P httpd_enable_homedirs on;认证与授权配置认证是指用户通过浏览器访问某一受保护资源时,需要提供正确的用户名和密码才能访问。
Apache的工作原理
Apache的工作原理Apache是一个开源的Web服务器软件,它是目前全球使用最广泛的Web服务器软件之一。
它的工作原理是通过处理客户端请求,并将请求的资源返回给客户端。
1. 服务器启动当Apache服务器启动时,它会在指定的端口上监听客户端的请求。
默认情况下,Apache监听80端口,这是HTTP协议的默认端口。
服务器启动后,它会等待客户端的连接请求。
2. 接受客户端请求当客户端发送一个HTTP请求到Apache服务器时,服务器会接受这个请求。
这个请求包括请求的资源的URL、请求的方法(GET、POST等)以及其他的请求头信息。
3. 解析请求Apache服务器会解析客户端的请求。
它会解析请求的URL,确定请求的资源的位置。
如果请求的资源是一个静态文件,比如HTML、CSS、JavaScript文件,服务器会直接返回这个文件。
如果请求的资源是一个动态文件,比如PHP、Python、Java等脚本文件,服务器会将请求转发给相应的解释器来处理。
4. 处理请求对于静态文件,Apache服务器会直接返回文件内容给客户端。
对于动态文件,服务器会将请求转发给相应的解释器。
解释器会执行脚本,并生成动态内容。
然后,服务器将生成的内容返回给客户端。
5. 发送响应Apache服务器会将生成的响应发送给客户端。
响应包括HTTP状态码、响应头信息以及响应的内容。
服务器会使用HTTP协议将响应发送给客户端。
6. 断开连接一旦服务器发送完响应,它会断开与客户端的连接。
客户端收到响应后,根据需要进行进一步的处理。
7. 日志记录Apache服务器会将每个请求的相关信息记录到日志文件中。
这些日志文件可以用来分析服务器的性能、访问情况等。
总结:Apache的工作原理可以简单概括为接受客户端请求、解析请求、处理请求、发送响应和断开连接。
它通过监听指定的端口,接受客户端的连接请求,并根据请求的内容返回相应的资源。
无论是静态文件还是动态文件,Apache都能处理并返回给客户端。
Apache服务器配置
IN CNAME
IN CNAME
在上面的配置中,在提交的DNS正向配置文件以及反向配置文件中, 已经具有如下的A记录和PTR记录,分别为
www
利用httpd.conf我们可以对Apache服务器进行全局 配置、管理或预设服务器的参数定义、虚拟主机的设 置等。httpd.conf是一个文本文件,我们可以用vi编辑 工具进行修改。 httpd.conf文件主要分为三个部分: Section 1: Global Environment (全局变量) Section 2: 'Main' server configuration(主服务器配置) Section 3: Virtual Hosts(虚拟主机配置)
2.配置基于IP的虚拟主机 (1)基于IP虚拟主机的DNS配置 如果用户想要创建两个基于IP的虚拟主机和
这两个虚拟主机站点的共同域名是 。用户可以按照如下所示在DNS正向配置文 件中进行配置:
lth IN
A 192.168.15.212
3.Port 该参数用来指定Apache服务器的监听端口。一般来说,标准的HTTP
服务默认端口号是80,一ቤተ መጻሕፍቲ ባይዱ不要更改这个数值。本例为80端口:
Port 80 4.ServerAdmin
设置Apache服务器管理员的邮件地址。
5.ServerName 该参数使得用户可以自行设置主机名,以取代安装Apache服务器主机
7.MaxKeepAliveRequests 当使用保持连接(persistent connection)功能时,可以使用本参数决定
每次连接所能发出的要求数目的上限。如果此数值为0,则表示没有限制。 建议尽可能使用较高的数值,以充分发挥Apache的高性能,本例设置每次 连接所能发出的要求数目上限为100:
apache原理
apache原理
Apache是一种开源的Web服务器软件,它的原理是基于客户端-服务器模型。
其工作流程如下:
1. 客户端发送一个HTTP请求到Apache服务器。
2. Apache服务器接收到请求后,会根据请求的URL路径来确定对应的处理程序或静态文件。
3. 如果请求的资源是一个静态文件,Apache会直接返回该文件给客户端。
4. 如果请求的资源是一个动态页面,Apache会根据配置文件将请求传递给对应的处理程序(如PHP解释器)来生成动态内容。
5. 处理程序生成动态内容后,将结果返回给Apache服务器。
6. Apache服务器将处理程序返回的结果作为HTTP响应,发送给客户端。
7. 客户端收到响应后,会解析HTML并根据需要加载其他相关的资源(如CSS、JavaScript等)。
8. 客户端展示网页内容给用户。
Apache的工作原理基于多线程或多进程的模式来处理并发请求。
通过配置文件,可以设置Apache服务器的最大并发连接数、请求队列大小等参数,以提高服务器的性能和稳定性。
此外,Apache还提供了一系列的扩展模块,可以根据需要添加到服务器中,以实现例如SSL加密、模块化的身份验证、URL重写等功能。
总之,Apache是一个可靠且强大的Web服务器软件,通过处
理客户端的请求,并将静态文件或动态内容返回给客户端,使人们能够通过互联网访问网站和应用程序。
Apache的工作原理
Apache的工作原理Apache是一个开源的Web服务器软件,它是目前全球使用最广泛的Web服务器软件之一。
它的工作原理是通过接收来自客户端的HTTP请求,并根据配置文件中的设置来处理这些请求,并将相应的HTML页面或其他资源返回给客户端。
Apache的工作原理可以分为以下几个步骤:1. 客户端发送HTTP请求:当用户在浏览器中输入网址或点击链接时,浏览器会向服务器发送HTTP请求。
这个请求包含了请求的资源路径、请求方法(如GET或POST)以及其他相关的请求头信息。
2. 服务器接收请求:Apache服务器接收到客户端发送的HTTP请求后,会根据配置文件中的设置来确定如何处理这个请求。
配置文件中包含了一系列的规则,用于指定如何处理不同类型的请求。
3. 请求处理:Apache根据配置文件中的规则来处理接收到的请求。
这包括查找请求的资源、验证用户的身份、执行服务器端的脚本等操作。
Apache支持多种处理请求的模块,如静态文件处理模块、动态内容处理模块等。
4. 资源定位:Apache根据请求中的资源路径来定位请求的资源。
如果请求的是静态文件(如HTML、CSS、JavaScript等),Apache会直接返回该文件;如果请求的是动态内容(如PHP、Python脚本等),Apache会将请求转发给相应的处理模块进行处理,并将处理结果返回给客户端。
5. 生成响应:Apache根据请求的资源和处理结果生成响应。
响应包括HTTP状态码、响应头信息和响应体。
HTTP状态码指示请求的处理结果,响应头包含了一些额外的信息,如响应的内容类型、响应的长度等,响应体则是服务器返回给客户端的实际内容。
6. 响应返回给客户端:Apache将生成的响应返回给客户端。
客户端浏览器接收到响应后,会根据响应的内容进行相应的处理,如渲染HTML页面、执行JavaScript代码等。
总结:Apache的工作原理是通过接收来自客户端的HTTP请求,并根据配置文件中的设置来处理这些请求,并将相应的HTML页面或其他资源返回给客户端。
Linux——搭建Apache(httpd)服务器
Linux——搭建Apache(httpd)服务器⼀、基本概念Apache(或httpd)是Internet上使⽤最多的Web服务器技术之⼀,使⽤的传输协议是http超⽂本传输协议(⼀个基于超⽂本的协议),⽤于通过⽹络连接来发送和接受对象。
有两个版本:http:超⽂本传输协议,通过线路以明⽂形式发送,默认情况下使⽤80/TCP(也可以使⽤其他端⼝)https:经TLS/SSL安全加密的超⽂本传输协议,默认情况下使⽤端⼝443/TCP⼆、了解Apache的配置⽂件1、配置⽂件的分类在Linux系统中配置服务,其实就是修改服务的配置⽂件,httpd服务程序的主要配置⽂件及存放位置如下:配置⽂件的名称存放位置服务⽬录/etc/httpd主配置⽂件/etc/httpd/conf/httpd.conf虚拟主机配置⽂件/etc/httpd/conf.d⽇志⽂件/etc/httpd/logs⽹站数据⽬录/var/www/html2、主配置⽂件的重要参数主配置⽂件/etc/httpd/conf/httpd.conf参数⽤途ServerRoot服务⽬录ServerAdmin管理员邮箱User运⾏服务的⽤户Group运⾏服务的⽤户组ServerName⽹站服务器的域名DocumentRoot⽂档根⽬录(⽹站数据⽬录)Directory⽹站数据⽬录的权限Listen监听的IP地址与端⼝号DirectoryIndex默认的索引页页⾯ErrorLog错误⽇志⽂件CustomLog访问⽇志⽂件Timeout⽹页超时时间,默认为300秒3、Directory标签<Directory "/var/www/html">AllowOverride None #设置.htaccess⽂件中的指令类型,None表⽰禁⽌使⽤.htaccess,该参数⼀般不改Require all granted #设置权限,默认开启所有客户机访问权限</Directory>三、如何配置Apache服务器⾸先准备:主机名、⽹络、yum源1、更改主机名:[root@localhost ~]# hostnamectl set-hostname $主机名[root@localhost ~]# bash #环境变量重载2、配置⽹络(1)虚拟交换机、⽹络适配器选择仅主机模式,并且配置为192.168.100.0⽹段;(2)编辑⽹络配置⽂件:[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33修改: BOOTPROTO=static #改为静态IP地址ONBOOT=yes #改为开机⾃启IPADDR=192.168.100.10PREFIX=24 或者 NETMASK=255.255.255.0(3)重启⽹络服务:[root@localhost ~]# systemctl restart network3、配置yum源(1)先在VMware⾥⾯把系统镜像⽂件连接到虚拟机的光驱上;(2)挂载光驱⾥的镜像:[root@localhost ~]# mount /dev/cdrom /media(3)修改yum源配置⽂件:[root@localhost ~]# vim /etc/yum.repos.d/local.repo[rhel]name=rhelbaseurl=file:///mediaenabled=1gpgcheck=0(4)清空yum源缓存信息:[root@localhost ~]# yum clean all(5)检索当前yum源信息:[root@localhost ~]# yum repolist任务⼀:配置简单的httpd服务1、安装httpd服务[root@server ~]# yum -y install httpd2、启动httpd服务[root@server ~]# systemctl restart httpd[root@server ~]# systemctl enable httpd3、配置防⽕墙[root@server ~]# firewall-cmd --permanent --add-service=http[root@server ~]# firewall-cmd --reload4、关闭SELinux[root@server ~]# setenforce 05、客户端测试[root@client ~]# firefox http://IP地址或者 curl http://IP地址任务⼆:配置基于⽤户的个⼈⽹站注意:该⽤户必须在Linux系统中存在1、新建⼀个⽤户(⽹站基于该⽤户)[root@server ~]# useradd user0[root@server ~]# passwd user02、修改⽤户的家⽬录权限,使其他⽤户具有读取和执⾏的权限[root@server ~]# chmod -R 705 /home/user03、创建存放⽤户个⼈主页空间的⽬录,写user0的⽹页⽂件[root@server ~]# mkdir /home/user0/public_html[root@server ~]# cd /home/user0/public_html[root@server ~]# echo "this is user0's web">>index.html4、修改基于⽤户的httpd配置⽂件[root@server ~]# vim /etc/httpd/conf.d/userdir.conf修改: UserDir enabled #开启,表⽰让httpd服务程序开启个⼈⽤户主页功能UserDir public_html #去注释,UserDir参数表⽰⽹站数据在⽤户家⽬录中的保存⽬录名称5、配置防⽕墙(同上)[root@server ~]# firewall-cmd --permanent --add-service=http[root@server ~]# firewall-cmd --reload6、修改selinux权限[root@server ~]# getsebool -a|grep home[root@server ~]# setsebool httpd_enable_homedirs on7、重启服务[root@server ~]# systemctl restart httpd8、客户端测试[root@client ~]# firefox http://IP地址/~username 或者curl http://IP地址/~username任务三:配置基于域名访问的虚拟主机1、新建虚拟主机的⽹页⽂件[root@server ~]# mkdir /www/one /www/two[root@server ~]# cd /www/one[root@server ~]# echo "this is a web for virtual host one">>index.html[root@server ~]# cd /www/two[root@server ~]# echo "this is a web for virtual host two">>index.html[root@server ~]# chmod o+x /www2、配置虚拟主机的⽂件[root@server ~]# cd /etc/httpd/conf.d[root@server ~]# vim vhost.conf<Directory /www/one> #设置⽹站⽬录权限Require all granted #开启所有客户机访问权限</Directory><VirtualHost 192.168.100.10> #虚拟主机ServerName #定义服务器名称DocumentRoot /www/one/ #⽹站数据⽬录</VirtualHost><Directory /www/two>Require all granted</Directory><VirtualHost 192.168.100.11>ServerName DocumentRoot /www/two/</VirtualHost>3、做域名解析⽂件server/client[root@server ~]# vim /etc/hosts192.168.100.10 192.168.100.11 4、配置防⽕墙(同上)[root@server ~]# firewall-cmd --permanent --add-service=http[root@server ~]# firewall-cmd --reload5、修改虚拟主机⽹页⽂件的selinux上下⽂类型[root@server ~]# semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?'[root@server ~]# restorecon -RFv /www6、重启服务[root@server ~]# systemctl restart httpd任务四:配置基于端⼝访问的虚拟主机1——新建虚拟主机的⽹页⽂件[root@server ~]# mkdir /www/8088[root@server ~]# echo "this is a web for port 8088 ">>index.html[root@server ~]# mkdir /www/8089[root@server ~]# echo "this is a web for port 8089 ">>index.html2——配置虚拟主机的⽂件[root@server ~]# cd /etc/httpd/conf.d[root@server ~]# vim vhost.conf<Directory /www/8088/>Require all granted</Directory><virtualHost 192.168.100.10:8088>DocumentRoot /www/8088/</virtualHost><Directory /www/8089/>Require all granted</Directory><virtualHost 192.168.100.10:8089>DocumentRoot /www/8089/</virtualHost>3、配置防⽕墙[root@server ~]# firewall-cmd --permanent --zone=public --add-port=8089/tcp[root@server ~]# firewall-cmd --permanent --zone=public --add-port=8088/tcp[root@server ~]# firewall-cmd --reload4、关闭SELinux[root@server ~]# setenforce 05、重启服务[root@server ~]# systemctl restart httpd6、使⽤浏览器访问任务五:配置基于TLS加密的虚拟主机注意:经TLS/SSL安全加密的超⽂本传输协议,默认情况下使⽤端⼝443/TCP 1、安装TLS加密软件,⽹站内容不⽤明⽂传输[root@server ~]# yum -y install mod_ssl2、⽣成密钥[root@server ~]# openssl genrsa >tlsweb.key3、⽣成证书请求⽂件[root@server ~]# openssl req -new -key tlsweb.key > tlsweb.csr4、⽣成证书⽂件[root@server ~]# openssl req -x509 -days 365 -key tlsweb.key -in tlsweb.csr >tlsweb.crt5、修改ssl.conf配置⽂件[root@server ~]# vim /etc/httpd/conf.d/ssl.confSSLCertificateFile /etc/pki/tls/certs/tlsweb.crtSSLCertificateKeyFile /etc/pki/tls/private/tlsweb.key6、把证书⽂件拷贝到ssl.conf配置⽂件⾥的对应路径下⾯[root@server ~]# cp tlsweb.crt /etc/pki/tls/certs/7、把秘钥⽂件拷贝到ssl.conf配置⽂件⾥的对应路径下⾯[root@server ~]# cp tlsweb.key /etc/pki/tls/private/。
apache服务器全局配置详解(全)
apache服务器全局配置详解(全)服务器标识相关指令:ServerNameServerAdminServerSignatureServerTokensUseCanonicalNameUseCanonicalPhysicalPortServerAdmin和ServerTokens指令控制有关服务器的哪些信息将出现在服务器⽣成的⽂档中(如错误消息)。
ServerTokens指令设置服务器HTTP响应头字段的值。
ServerName、UseCanonicalName、 UseCanonicalPhysicalPort指令⽤来决定怎样构建⾃引⽤URL,譬如,某客户端对⼀个⽬录发出请求,但没有包含⽬录名最后的斜线"/",Apache将重定向客户端到包含"/"的全名,以使客户端可以正确解析⽂档中的相对引⽤。
语法:ServerName [scheme://] FQDN [:port]这个指令⽤来设置服务器⽤于辨识⾃⼰的主机名和端⼝号。
主要⽤于创建重定向URL。
例如,你的web服务器的主机名为,但你的web服务器同时在DNS服务器中拥有⼀个DNS别名。
⽽你希望web服务器更显著⼀点,你可以在http.conf中使⽤ServerName指令来实现:ServerName :80当没有指定ServerName时,服务器会尝试对IP地址进⾏反向查询来推断主机名。
如果在ServerName中没有指定端⼝号,服务器会监听所有端⼝。
为了加强可靠性和可预测性,应该使⽤ServerName显⽰的指定⼀个主机名和端⼝号。
如果使⽤的是基于域名的虚拟主机,在<VirtualHost>段中的ServerName将是为了匹配这个虚拟主机,在“Host:”请求头中必须写主机名。
语法:ServerAdmin email-address|URL这个指令⽤来设置服务器返回给客户端的错误信息中包含的管理员邮件地址。
Apache的工作原理
Apache的工作原理Apache是一个开源的Web服务器软件,它的工作原理是通过处理HTTP请求和响应来提供网页内容。
下面将详细介绍Apache的工作原理。
1. Apache的架构Apache的架构采用多进程模型,主要由一个主进程和多个工作进程组成。
主进程负责监听和接收客户端的HTTP请求,然后将请求分发给工作进程处理。
工作进程负责处理请求并生成响应,然后将响应返回给客户端。
2. 连接管理当客户端发起HTTP请求时,Apache的主进程会接收到该请求,并创建一个工作进程来处理该请求。
工作进程会与客户端建立连接,并在连接建立后开始处理请求。
3. 请求处理一旦连接建立,工作进程会读取客户端发送的HTTP请求。
它会解析请求头部信息,包括请求方法、URL、请求头等。
根据请求的URL,Apache会查找配置文件中相应的虚拟主机和目录配置。
4. 虚拟主机和目录配置Apache支持虚拟主机,即在一台服务器上运行多个网站。
每个虚拟主机可以有自己的域名、IP地址和独立的配置文件。
工作进程根据请求的URL匹配到相应的虚拟主机配置,然后根据配置文件中的目录配置找到请求的文件或处理程序。
5. 静态文件处理如果请求的是静态文件,比如HTML、CSS、JavaScript、图片等,工作进程会直接读取文件内容,并将其作为响应返回给客户端。
这个过程简单高效,不需要额外的处理。
6. 动态内容处理如果请求的是动态内容,比如PHP、Python、Java等脚本文件,工作进程会将请求发送给相应的处理程序,比如PHP解释器。
处理程序会执行脚本,并生成动态内容作为响应返回给工作进程,然后工作进程将响应返回给客户端。
7. 响应返回工作进程将生成的响应返回给客户端,包括响应头部和响应体。
响应头部包含了状态码、响应类型、长度等信息,响应体包含了实际的内容。
一旦响应返回,工作进程会关闭与客户端的连接。
8. 日志记录Apache还支持日志记录,用于记录客户端的请求和服务器的响应。
Apache HTTP服务器指南说明书
Table of ContentsAbout1 Chapter 1: Getting started with apache2 Remarks2 Versions2 Various Apache httpd releases2 Examples2 Installation or Setup2 Ubuntu Installation2 Windows Installation2 CentOS Installation2 macOS Installation3 [Ubuntu] Simple Hello World Example3 Installing Requirements3 Setting up the HTML3 Visiting Your Webpage4 To ensure the server is up.4 Chapter 2: .htaccess files in Apache5 Examples5 Rewrite Engine5 Force HTTPS5 Enable CORS6 Prerequisites7 301 Redirection by Htaccess7 Chapter 3: Apache Flume8 Introduction8 Examples8 Streaming / Log Data8 Chapter 4: How to create virtual host in Apache9 Remarks9 Examples9Name-based virtual host configuration9 PHP Development Virtual Host10 Virtual Host In WAMP111) IP based vhosts 2) Multiple vhosts with the same Port 3) Defining vhosts using Macro (A12Force HTTPS using virtual host13 Credits14AboutYou can share this PDF with anyone you feel could benefit from it, downloaded the latest version from: apacheIt is an unofficial and free apache ebook created for educational purposes. All the content is extracted from Stack Overflow Documentation, which is written by many hardworking individuals at Stack Overflow. It is neither affiliated with Stack Overflow nor official apache.The content is released under Creative Commons BY-SA, and the list of contributors to each chapter are provided in the credits section at the end of this book. Images may be copyright of their respective owners unless otherwise specified. All trademarks and registered trademarks are the property of their respective company owners.Use the content presented in this book at your own risk; it is not guaranteed to be correct nor accurate, please send your feedback and corrections to ********************Chapter 1: Getting started with apache RemarksThis section provides an overview of what apache is, and why a developer might want to use it. It should also mention any large subjects within apache, and link out to the related topics. Sincethe Documentation for apache is new, you may need to create initial versions of those relatedtopics.VersionsVarious Apache httpd releasesExamplesInstallation or SetupDetailed instructions on getting apache set up or installed.Ubuntu Installationsudo apt-get install apache2Windows InstallationCheck out the WAMP stack. WAMP stands for Windows, Apache, MySQL, PhpMyAdmin. CentOS InstallationApache 2.2 comes with CentOS6, whereas 2.4 comes with CentOS7, to install on either OS, run yum -y install httpdmacOS InstallationmacOS comes with Apache pre-installed,however,can install Apache via HomebrewIf you already have the built-in Apache running, it will need to be shutdown first, and any auto-loading scripts removed.$ sudo apachectl stop$ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist 2>/dev/null $ brew install httpd24 --with-privileged-ports --with-http2[Ubuntu] Simple Hello World ExampleThis example will guide you through setting up a back end serving an a Hello World HTML page. Installing RequirementsOrder matters for this step!•sudo apt-get install apache2Setting up the HTMLApache files live in /var/www/html/. Lets quickly get there. Make sure you're in your root directory first, cd, then cd /var/www/html/.This html directory is where all your website files will live. Lets quickly make a simple Hello World file.Using your favorite text editor, type the following in<!DOCTYPE html><html><head><title>Hello World!</title></head><body><h1>Hello World!</h1></body></html>Save this file as index.html in the current directory and you're set to go!Visiting Your WebpageTo visit the page you just created, in your browser of choice, go to localhost. If that doesn't work, try 127.0.0.1. You should see "Hello World!" as a h1. You're done!To ensure the server is up.If you get a message that the browser can't connect to the server, first check to ensure the server is up.$ ps -aef | grep httpdYou should see a few httpd processes if Apache is up and running.Read Getting started with apache online: https:///apache/topic/964/getting-started-with-apacheChapter 2: .htaccess files in ApacheExamplesRewrite EngineThe RewriteEngine module within Apache is used to dynamically rewrite URLs and paths depending on various expressions provided:<IfModule mod_rewrite.c>RewriteEngine OnRewriteBase /RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [END]</IfModule>The above rules will rewrite PHP files to no longer show their extension, and so that index.php will just show as a naked domain (similar to the behavior normally seen in index.html). The above rule ships with WordPress.Note that in Apache httpd 2.2.16 and later, this entire block can be replaced with a single line using the FallbackResource directive:FallbackResource /index.phpForce HTTPS.htaccess can be used to force your HTTP site to redirect to HTTPS.Here's a quick way that doesn't require editing the code for your domain:RewriteEngine OnRewriteCond %{HTTPS} =offRewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]Warning: The code above assumes that you can trust %{HTTP_HOST} to point to yourdomain.If you need to be sure that the redirect location is your domain, replace %{HTTP_HOST}with your domain.The code above does this:1.Enable RewriteEngine.2.Continue if the current request is not using HTTPS.3.Do a HTTP 301 redirect to https://%{HTTP_HOST}%{REQUEST_URI}, where•%{HTTP_HOST} is the host requested by the browser and•%{REQUEST_URI} is the URI requested by the browser (everything after the domain).Warning: Your web application must be able to handle HTTPS requests, and Apachefor your host should be configured with a valid site certificate.Note that it is significantly more efficient to simply do a Redirect in the http vhost than to do these multiple per-request comparisons in a .htaccess file. See /httpd/RedirectSSL for further discussion of this technique.Enable CORSTo enable Cross-Origin Resource Sharing (CORS) in Apache you'll need to set at least one HTTP header which changes it (the default behaviour is to block CORS). In the following example, we're going to be setting this HTTP header inside .htaccess, but it can also be set in your site your-site.conf file or the Apache config file. Regardless of how your configuration looks like, you can set the relevant HTTP headers in any Apache config block, i.e. <VirtualHost>, <Directory>,<Location>, and <Files>.There are a few CORS related HTTP headers which you can return in the response:Access-Control-Allow-OriginAccess-Control-Allow-CredentialsAccess-Control-Allow-MethodsAccess-Control-Max-AgeAccess-Control-Allow-HeadersAccess-Control-Expose-HeadersSome of the above are required for "preflight" requests. Some HTTP clients (namely, modern browsers) perform a request before your desired request just to see if they have authorisation to make the actual request on the server. See https:///wiki/Cross-origin_resource_sharing for more on the preflight request.The main HTTP header we need is Access-Control-Allow-Origin and that's we're going to set. However, the same principle applies pretty much to all of them (you just need to know what to return).The following example sets the required HTTP header within a <Directory> config block to enable an SSL protected client Full Qualified Domain Name (FQDN):<Directory /path/to/your/site/>Header set Access-Control-Allow-Origin "https://my.CLIENT.domain"</Directory>After we've set this on the server, we can now perform a request from https://my.client.domain to our server and it should respond.Note: A lot of people use Access-Control-Allow-Origin: "*" which is a wildcard, to mean requests from ALL domains should be accepted. This is usually ill-advised unless you're running some sortof a public API or repository of files. Also, please note the context of you HTTP header setting. You might want to allow HTTP requests for an API, but not for "hotlinking" images etc. You can set this header anywhere you want within your Apache config flow to only set it in specific situations. For example, the following would only set the CORS HTTP header when the requested path is not a file or directory (suits a public API which disallows image hotlinking):<Directory /path/to/your/site/>Options +FollowSymlinksOptions +IndexesRewriteEngine On#Make sure it's not a specific file or directory that they're trying to reachRewriteCond %{SCRIPT_FILENAME} !-fRewriteCond %{SCRIPT_FILENAME} !-dHeader set Access-Control-Allow-Origin "*"RewriteRule ^(.*)$ index.php/$1 [L]</Directory>PrerequisitesYou've got to have mod_headers installed and enabled: a2enmod headers301 Redirection by HtaccessThe HTTP response status code 301 Moved Permanently is used for permanent URL redirection, meaning current links or records using the URL that the response is received for should be updated. The new URL should be provided in the Location field included with the response. The 301 redirect is considered a best practice for upgrading users from HTTP to HTTPS. write this code in htaccess file for PHP-APACHERedirect 301 /oldpage/ /newpage/Here is an example using an htaccess file to redirect to a non www with an SSL attached to the domain.RewriteEngine OnRewriteCond %{HTTPS} offRewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]RewriteRule ^(.*)$ http://%1/$1 [R=301,L]RewriteCond %{HTTPS} onRewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]RewriteRule ^(.*)$ https://%1/$1 [R=301,L]RewriteEngine OnRewriteCond %{SERVER_PORT} 80RewriteRule ^(.*)$ https:///$1 [R,L]Read .htaccess files in Apache online: https:///apache/topic/2089/-htaccess-files-in-apacheChapter 3: Apache FlumeIntroductionApache Flume is a tool/service/data ingestion mechanism for collecting aggregating and transporting large amounts of streaming data such as log files, events (etc...) from various sources to a centralized data store.Flume is a highly reliable, distributed, and configurable tool. It is principally designed to copy streaming data (log data) from various web servers to HDFS.ExamplesStreaming / Log DataGenerally, most of the data that is to be analyzed will be produced by various data sources like applications servers, social networking sites, cloud servers, and enterprise servers. This data will be in the form of log files and events.Log file − In general, a log file is a file that lists events/actions that occur in an operating system. For example, web servers list every request made to the server in the log files.On harvesting such log data, we can get information about −the application performance and locate various software and hardware failures. the user behavior and derive better business insights. The traditional method of transferring data into the HDFS system is to use the put command. Let us see how to use the put command.Read Apache Flume online: https:///apache/topic/9630/apache-flumeChapter 4: How to create virtual host in ApacheRemarksThe main entry point for Apache's VirtualHost is at Apache Virtual Host documentation. From there, you have general documentation about virtual host configuration, and reference documentation about VirtualHost and related directives as well.ExamplesName-based virtual host configurationName-based virtual hosting on Apache is described on the Apache website as such: With name-based virtual hosting, the server relies on the client to report the hostnameas part of the HTTP headers. Using this technique, many different hosts can share thesame IP address.Therefore, more than one website can be hosted on one server through this method. On ubuntu, the configuration files are in /etc/apache2/sites-available. In that directory, you will find 000-default.conf. That is the default configuration, all requests will be sent to this configuration file until others have been set up.To set up a virtual host, here will be used, but you should replace it with your . Copy the default file:cp 000-default.conf .confThe configuration file can have the following directives:<VirtualHost *:80>****************************ServerName ServerAlias DocumentRoot /var/www//htmlErrorLog /var/log/apache/logs/error.log# Possible values include: debug, info, notice, warn, error, crit,# alert, emerg.LogLevel warnCustomLog /var/log/apache/logs/access.log combined</VirtualHost>•The first line, indicates that all requests on port 80 (default http port) should be matched. Youcan also have a IP address instead of * which is the IP of the server.•ServerAdmin is the contact details of website admin used for displaying with http errormessages.•ServerName is the domain name of website.•ServerAlias is a secondary name of the website, usually will be •DocumentRoot is the root folder loaded when we browse a website.•ErrorLog is the file in where errors are directed•LogLevel. is the level of errors to be sent to the log•CustomLog is the file where access information is directedEdit the file replacing with your website domain name and appropriate directory for the website files.Save the file and enable the site with the following Apache command:sudo a2ensite .confReload apachesudo service apache2 reloadA few more things that must be checked:•Ensure your DNS for your domain is set up for the correct IP (this may take time topropogate)•Ensure your port 80 is open on the firewall•Ensure your file permissions are setup correctly on the server files - ownership should be www-data:www-data and directory permissions should be 750 and file permissions should be 640.Your virtual host should be up and running! You can repeat this for other websites on the same server, with a different configuration file (using the same naming convention) and different directories under /var/www.PHP Development Virtual HostThis is an example on how to control PHP error logging in a virtual host site for development and debugging. AssumptionsThe PHP module has been installed.••Development environment is not for production.<VirtualHost *:80>ServerName DocumentRoot /var/www/domains//htmlErrorLog /var/www/domains//apache.error.logCustomLog /var/www/domains//apache.access.log commonphp_flag log_errors onphp_flag display_errors onphp_value error_reporting 2147483647php_value error_log /var/www/domains//php.error.log</VirtualHost>Note: The Virtual Host configuration is for development only because the display_errors is enabled and you do not want that in production.Virtual Host In WAMPAssuming that you are working with Windows 7 PCStep 1: GOTO -> C:\Windows\System32\drivers\etc Where you will find a file named “hosts”, kindly copy it and paste it at the same location. A copy file of hosts will be created there.Now we need to make some modifications in this file but if you try to edit it with any editor like notepad or notepad++, it will not allow you to save the file.Now again copy the same file and paste it on your desktop, now you can edit this file easily.You will find one or many entries like: 127.0.0.1 localhost In that file. Now add another line below that line, for example: 127.0.0.1 myproject1.local By this way you have defined a new sub-domain “myproject1.local” which can work in place of “localhost/myproject1”.Step 2: Okay, now it’s time to define the root path to access this newly created domain right? GOTO : C:\wamp\bin\apache\Your-Apache-Version\conf\extra Here you will find a file named “httpd-vhosts”. Open it in editor and paste the below lines in it.<VirtualHost *:80>**********************************.comDocumentRoot "c:/wamp/www/myproject1/”ServerName myproject1.localErrorLog "logs/myproject1.local-error.log"CustomLog "logs/myproject1.local.log" common</VirtualHost>Now you are almost there to access the project which resides at “c:/wamp/www/myproject1/”Step3: GOTO : C:\wamp\bin\apache\your-Apache-Version\confFind a file named “httpd.conf”, copy it and paste it at the same location for safety. Open file in editor and find a word “# Virtual hosts”, below you will find a line “Include conf/extra/httpd-vhosts.conf” If it is commented then make it uncommented and restart your wamp-server’s services.Go to your web-browser and write myproject1.local, you can see the project running now.Now you might face a problem that your localhost will not work by using localhost as a URL. No Worries…paste this code in “httpd-vhosts” file.<VirtualHost *:80>**********************************.comDocumentRoot "c:/wamp/www"ServerName localhostErrorLog "logs/localhost-error.log"CustomLog "logs/localhost.log" common</VirtualHost>Restart all the services of WAMP, the work is done.Thanks & cheers Chintan Gor1) IP based vhosts 2) Multiple vhosts with the same Port 3) Defining vhosts using Macro (Apache2.4)1) IP based vhosts<VirtualHost 192.168.13.37>ServerName DocumentRoot /var/www/domains//htmlErrorLog /var/log//error.logCustomLog /var/log//access.log common</VirtualHost><VirtualHost 192.168.47.11>ServerName DocumentRoot /srv/www/htdocs//htmlErrorLog /var/log//error.logCustomLog /var/log//access.log common</VirtualHost>Just change the port to your given IP(s). The port is irrelevant for the decision which vhost is chosen.2) Multiple vhosts with the same PortSince NameVirtualHost isn't needed anymore you can just write multiple vhosts with the same port.<VirtualHost *:80>DocumentRoot /srv/www/htdocs//htmlErrorLog /var/log//error.logCustomLog /var/log//access.log common</VirtualHost><VirtualHost *:80>ServerName ServerAlias DocumentRoot /var/www/domains//htmlErrorLog /var/log//error.logCustomLog /var/log//access.log common</VirtualHost>Here the opposite applies: the IP is irrelevant, but if the request is received on port 80 the name you entered is evaluated. Did you call the 2nd vhost gets picked. And if you called any other url (like , but also ) the first one will be picked. You can use thisvhost as a 'fallback' if you will.3) Defining vhosts using Macro (Apache2.4)<Macro VHost $port $host><VirtualHost *:$port>Servername $hostDocumentRoot /srv/www/htdocs/$hostErrorLog /var/log/$host/error.log</VirtualHost></Macro>Use VHost 80 Use VHost 443 secure_Creates two vhosts, one for port 80, one for 443, and sets the used variables accordingly.Force HTTPS using virtual hostUse Redirect to force users to connect to the secure URL.<VirtualHost *:80>ServerName SSLProxyEngine onRedirect permanent / https://secure_/</VirtualHost>The rest of the configuration can be put in the ssl virtual host (port 443) since everything is redirected.<VirtualHost _default_:443>ServerName secure_********************************DocumentRoot /var/www/domains/secure_/htmlErrorLog /var/log/secure_/error.logCustomLog /var/log/secure_/access.log commonSSLEngine On...</VirtualHost>Read How to create virtual host in Apache online: https:///apache/topic/4856/how-to-create-virtual-host-in-apacheCredits。
Apache的工作原理
Apache的工作原理Apache是一个开源的跨平台Web服务器软件,它是目前最流行的Web服务器之一。
它的工作原理是通过接收客户端的HTTP请求并返回相应的HTTP响应来提供Web服务。
1. 服务器启动当Apache服务器启动时,它会读取配置文件,该文件包含了服务器的各种设置和参数。
这些设置包括监听的端口、虚拟主机配置、日志文件位置等等。
一旦配置文件被加载,服务器就会开始监听指定的端口,等待客户端的连接。
2. 接收客户端请求当客户端发送HTTP请求到Apache服务器时,服务器会接收到这个请求。
这个请求包含了请求的方法(GET、POST等)、请求的URL、请求的头部信息等等。
3. 处理请求一旦服务器接收到客户端的请求,它会根据配置文件中的设置来决定如何处理这个请求。
这可能包括查找请求的文件、调用脚本、处理动态内容等等。
4. 静态文件处理如果请求的是一个静态文件(例如HTML、CSS、图片等),服务器会直接返回这个文件给客户端。
它会根据请求的URL来确定文件的位置,并将文件内容发送给客户端。
5. 动态内容处理如果请求的是一个动态内容(例如PHP、Python、Java等脚本),服务器会调用相应的解释器来执行这个脚本,并将执行结果返回给客户端。
服务器会将请求的参数传递给脚本,并将脚本的输出作为HTTP响应的一部份返回给客户端。
6. 虚拟主机处理Apache支持虚拟主机,这意味着可以在一个物理服务器上托管多个域名。
当接收到请求时,服务器会根据请求的域名来确定应该使用哪个虚拟主机配置来处理该请求。
这样可以实现多个域名共享同一个服务器的资源。
7. 日志记录Apache可以将请求和响应的详细信息记录到日志文件中。
这些日志文件包含了客户端的IP地址、请求的URL、响应的状态码等信息,可以用于分析服务器的性能和访问情况。
8. 安全性和权限控制Apache提供了多种安全性和权限控制的机制,以保护服务器和网站的安全。
httpd.conf配置完美详解
httpd.conf配置完美详解Linux下httpd.conf 配置详解1. 关于本文本文将以Apache 2.2为例,以rhel5为平台,讲述Apache服务器的安装和设置。
2. 关于ApacheApache 是一款功能强大、稳定、可支撑关键任务的Web服务器Apache具有如下特性:1) 几乎可以运行在所有的计算机平台上.2) 支持最新的HTTP/1.1协议3) 简单而且强有力的基于文件的配置(HTTPD.CONF).4) 支持通用网关接口(CGI)5) 支持虚拟主机.6) 支持HTTP认证.7) 集成PERL.8) 集成的代理服务器9) 可以通过WEB浏览器监视服务器的状态, 可以自定义日志.10) 支持服务器端包含命令(SSI).11) 支持安全SOCKET层(SSL).12) 具有用户会话过程的跟踪能力.13) 支持FASTCGI14) 支持JAVA SERVLETS.……更多信息请参阅Apache网站:/doc/327020310.html,3. Apache的安装Apache的安装无外两种方式:源码包安装和二进制包安装。
这两种方式各有特色,二位制包安装不需编译,针对不同的平台有经过优化编译的不同的二进制文件以及包格式,安装简单方便,源码包则必须先配置编译再安装,可以根据你所用的主机环境进行优化、选择你所用的模块,安装定制更灵活。
下面分别介绍这两种安装方式。
3.1 以源码包方式安装3.1.1 下载最新版本的apache软件访问apahce网站/doc/327020310.html,/download.cgi下载最新版本的Apache源码包。
本文使用的是2.2.6版本,在linux系统下用下面的命令下载:wget /doc/327020310.html,/httpd/httpd-2.2.6.tar.gz3.1.2 解压缩下载的源码包首先建立一个工作目录( 笔者建议的目录为/usr/local/src/apache ) :mkdir -p /usr/local/src/apache 将下载的源码包移至工作目录:mv httpd-2.2.6.tar.gz /usr/local/src/apache进入工作目录并用tar命令解压源码包:cd /usr/local/src/apachetar zxvf httpd-2.2.6.tar.gz命令执行结束后,当前工作目录下将生成一个新的子目录httpd-2.2.6,此目录下即为Apache的源码文件。
Apache的工作原理
Apache的工作原理Apache是一个开源的Web服务器软件,广泛应用于互联网上的网站和应用程序。
它的工作原理是基于客户端-服务器模型,通过接收和响应HTTP请求来提供网页和其他资源。
1. 连接管理当客户端发送一个HTTP请求到Apache服务器时,Apache会接收到这个请求并建立一个连接。
Apache使用TCP/IP协议来进行连接管理。
它维护一个连接池,可以同时处理多个连接。
一旦连接建立,Apache就会等待客户端发送请求。
2. 请求处理当Apache接收到客户端的HTTP请求后,它会解析请求的头部和主体。
头部包含了请求的方法(GET、POST等)、目标URL、请求的参数等信息。
主体则包含了POST请求的数据。
Apache会根据请求的URL和配置文件中的规则来确定如何处理这个请求。
3. 静态资源处理如果请求的是一个静态资源,比如HTML文件、图片、CSS文件等,Apache 会直接从硬盘上读取这个文件,并将它发送给客户端。
这个过程是非常高效的,因为Apache会使用操作系统的缓存机制来避免重复读取文件。
4. 动态资源处理如果请求的是一个动态资源,比如PHP脚本、Java应用程序等,Apache会将请求转发给相应的处理程序。
这个处理程序可以是一个CGI脚本、一个Servlet容器、一个应用服务器等。
Apache会将请求的参数和数据传递给处理程序,并等待处理程序的响应。
5. 响应生成处理程序会根据请求的参数和数据来生成一个响应。
这个响应可以是一个HTML页面、一个JSON字符串、一个图片等。
处理程序会将响应发送给Apache 服务器。
6. 响应传输一旦处理程序生成了响应,Apache会将这个响应发送给客户端。
它会将响应拆分成一系列的数据包,并使用TCP/IP协议将这些数据包发送给客户端。
客户端会接收到这些数据包,并将它们组装成完整的响应。
7. 连接关闭一旦响应发送完成,Apache会关闭与客户端的连接。
ApacheWeb服务器的配置
例3:仅允许来自网络192.168.16.0/24的客户端访问 :仅允许来自网络192.168.16.0/24的客户端访问 192.168.16.0/24
Order allow,deny Allow from 192.168.16.0/24
Web服务的基本配置( Web服务的基本配置(2) 服务的基本配置
设置相对根目录路径
相对根目录通常是Apache存放配置文件、日志文件、模块 相对根目录通常是Apache存放配置文件、日志文件、模块 文件等的地方。 在默认情况下,相对目录为/etc/httpd,它一般包含conf和 在默认情况下,相对目录为/etc/httpd,它一般包含conf和 logs子目录 logs子目录 ServerRoot “/etc/httpd” /etc/httpd”
设置目录权限(3) 设置目录权限(
Order:设置默认的访问权限和Allow和Deny语句的处 Order:设置默认的访问权限和Allow和Deny语句的处 理顺序
Order allow,deny
默认禁止所有客户端的访问,且Allow语句在Deny语句之前被匹配。 默认禁止所有客户端的访问,且Allow语句在Deny语句之前被匹配。 如果某条件同时匹配Deny和Allow语句,则Deny语句起作用(Allow 如果某条件同时匹配Deny和Allow语句,则Deny语句起作用(Allow 语句被覆盖)
注意:为了让主目录允许目录浏览,需要删除/etc/httpd/conf.d 注意:为了让主目录允许目录浏览,需要删除/etc/httpd/conf.d 目录下的welcome.conf文件,然后重启Apache。(这里不能将 目录下的welcome.conf文件,然后重启Apache。(这里不能将 welcome.conf重命名为welcome2.conf,为什么?) welcome.conf重命名为welcome2.conf,为什么?)
Apache服务器技术手册
Apache服务器技术手册1. 简介Apache是一款开源的Web服务器软件,它在全球范围内广泛应用于各种Web应用和网站。
本手册将深入介绍Apache服务器的技术细节和使用方法,以帮助读者更好地理解和应用该服务器。
2. 安装与配置2.1 安装Apache服务器要安装Apache服务器,可以从官方网站下载最新版本的安装程序。
根据所使用的操作系统,选择对应的安装包并按照提示进行安装。
2.2 配置Apache服务器安装完成后,需要对Apache服务器进行配置。
通过编辑主配置文件可以设置服务器的基本参数,例如监听端口、虚拟主机、访问控制等。
此外,还可以通过模块的加载和配置来扩展服务器的功能。
3. 虚拟主机配置Apache服务器支持虚拟主机,即在一台物理服务器上托管多个域名或网站。
虚拟主机的配置需要在Apache的主配置文件中添加相应的虚拟主机配置块,设置每个虚拟主机的域名、路径、日志文件等参数。
4. 访问控制与安全性为了保护网站的安全性,Apache服务器提供了多种访问控制和安全性配置选项。
其中,可以使用基于IP地址的访问控制来限制特定IP的访问权限。
此外,还可以启用SSL/TLS协议来实现安全通信,并配置防火墙来过滤恶意请求。
5. 动态内容处理Apache服务器对动态内容的处理非常灵活,可以通过各种模块来支持常见的脚本语言和应用程序。
例如,通过安装和配置PHP模块,可以在Apache服务器上运行PHP脚本。
类似地,还可以配置其他模块来支持Python、Perl等脚本语言或Java、等应用程序。
6. 性能优化为了提高Apache服务器的性能,可以采取一系列优化措施。
其中,可以通过调整服务器参数、缓存静态内容、启用压缩等方式来减少响应时间。
同时,还可以通过使用反向代理、负载均衡等技术将请求分散到多个服务器,提高并发处理能力。
7. 日志管理与监控Apache服务器记录各种请求和错误信息,这些日志文件对于故障排查和性能优化非常重要。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
# make install
- -prefix :用于指定httpd服务程序将要安装到的系统目录
- -enable-so :使httpd服务能够动态的加载模块功能
- -enable-rewrite :使httpd服务具有rewrite网页地址重写功能
httpd服务基础
1.httpd服务的目录结构
/usr/sbin/httpd Apache服务的主要执行程序
/var/log/httpd/access_log Apache访问日志
/var/log/httpd/error_log Apache错误日志
2.编译安装
# wget /dist/httpd/httpd-2.2.9.tar.gz
与Apache服务器相关的主要目录和文件如下
/etc/httpd/ Apache服务程序的主目录
/etc/httpd/conf/httpd.conf Apache服务器的主配置文件
/var/www/html/ Apache网页文档默认的根目录(网站根目录)
/etc/init.d/httpd Apache服务的控制脚本
# cd /usr/local/apache2/conf/
# cp httpd.conf httpd.conf.bak
# grep -v “#” httpd.conf.bak | grep -v “^$” > httpd.conf
httpd.conf中的全局配置
ServerRoot : 用于设置httpd服务器的根目录,该目录中包含了允许web站点必需的目录和文件,在httpd.conf配置文件中,如果设置的目录或文件不使用绝对路径,都认为是在服务器根目录下
如果希望httpd服务开机自动启动,可以将对应的启动命令写入到/etc/rc.d/rc.local文件中
# vi /etc/rc.d/rc.local
/usr/local/apache2/apachectl start
(4)排除httpd服务的个别启动故障
无法确定web服务器主机名的故障
KeepAliveTimeout : 设置保持连接的超时秒数
Include : 用于包含另一个配置文件的内容,可以将实现一些特殊功能的配置单独放到一个文件里,,再使用Include配置项包含到httpd.conf主配置文件中来,便于独立维护
httpd.conf中的区域配置
<Directory />
DocumentRoot : 设置网页文档目录在系统中的实际路径
DirectoryIndex : 设置网页默认索引页,可以设置多个文件,以空格分开
ErrorLog : 错误日志文件的路径和文件名
LogLevel : 记录日志的级别,默认为Warn警告
CustomLog : 访问日志的路径和格式类型
编辑 /etc/hosts文件,添加服务器的主机名,IP地址映射记录。如 192.168.0.12 www
TCP 80端口已被占用的故障
找出占用80端口的进程并关闭掉即可,很可能是系统原有RPM方式安装的httpd服务进程造成的。只要挺有原来的httpd服务,并将启动状态设置为关闭即可
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Diretory>
以上为目录区域,主要为特定目录(如系统根目录 / )设置访问权限
除目录区域外,经常会设置虚拟主机区域<VirtualHost>……..</VirtualHost
4.httpd服务日志
访问日志文件
该文件用于记录客户端访问Web服务器时间,文件名称为access_log。文件中的每一行对应一条访问记录,将会记录客户机IP地址,访问服务器的日期和时间,请求的网页对象等信息/usr/local/apache2/logs/access_log
错误日志文件
编辑httpd.conf主配置文件,添加配置行ServerName ,指定完整的主机名,若缺少该行,httpd服务可能会将127.0.0.1作为主机名
修改/etc/sysconfig/network文件,修该主机名,例如: HOSTNAME=
logs :用于保存Apache服务的日志文件
2.构建基本可用的Web服务器
(1)修改主配置文件
# vi /usr/local/apache2/conf/httpd.conf
ServerName
(2)检查httpd.conf文件的语法设置
# /usr/local/apache2/bin/apachectl -t
Байду номын сангаас
manual :目录中保存了Apache服务器完整的配置指南文档,以HTML文件格式提供
man :目录用于保存httpd、apachectl等程序的man帮助文档
lib :目录中保存了允许Apache服务所用的库文件
modules :目录中保存了提供给Apache服务器动态加载的模块文件
bin :目录中包括了运行和管理web服务所需要的执行程序,其中httpd是服务器的执行程序,apachectl是服务程序的控制脚本
conf :目录是Apache服务器的配置文件,其中httpd.conf是Apache服务器的主配置文件
htdocs :目录是Apache服务器的文档根目录,该目录将作为Web站点网页文件存放的根目录
PidFile : 保存服务器进程号PID的文件
Timeout : 设置web服务器与浏览器之间网络连接的超时秒数,默认为300妙
KeepAlive 是否使用保持连接功能off不使用,客户机每次连接只能从服务器请求返回一个文件,传输效率比较低,设置为On时,表示使用,刚好相反
MaxKeepAliveRequests : 客户端每次连接允许请求的最大文件数
# netstat -anpt | grep :80
# killall -9 httpd
# chkconfig --level 35 httpd off
3.httpd.conf配置文件
因为主配置文件有大量的注释行,可以通过grep命令去除httpd.conf文件中的注释行内容,仅保留有效的设置行清单
Listen : 设置服务器监听的端口号,默认为80
User : 运行httpd服务进程的用户身份
Group : 运行httpd进程的组身份
ServerAdmin : 设置服务器的管理员E-mail地址,可以通过此地址即使联系服务器管理员
ServerName : 设置服务器完整的主机名FQDN
或者
# /usr/local/apache2/bin/httpd -t //检查httpd.conf文件的语法是否正确
(3)启动终止及重启httpd服务
# /usr/local/apache2/bin/apachectl start //启动httpd服务
# netstat -anpt | grep :80
Linux(RHEL5)安装httpd服务器(理论篇)2010-09-13 18:13安装httpd服务器
1.RPM包安装
# mount /dev/cdrom /media
# cd /media/Server
# rpm –ivh -–aid --force httpd-2.2.3-6.el5.i386.rpm
# tar zxvf httpd-2.2.9.tar.gz -C /usr/src
# cd /usr/src/httpd-2.2.9
# ./configusr - -prefix=/usr/local/apache2 - -enable-so - -enalbe-rewrite
# make
该文件用于记录httpd服务启动或运行过程中出现错误的事件,文件名称为error_log。文件每一行对应一条错误记录,将会记录发生错误的日期和时间,错误事件类型。错误事件内容描述等/usr/local/apache2/logs/error_log