apache配置

时间:2024-10-28 02:55:22编辑:阿奇

apache的安装配置启用

Apache 的安装无外乎两种方式:源代码安装和二进制包安装。这两种安装类型各有特色,二进制包安装不需要编译,而源代码安装则需要先配置编译再安装,二进制包安装在一个固定的位置下,选择固定的模块,而源代码安装则可以让你选择安装路径,选择你想要的模块。本文主要介绍二进制DEB包安装方式(此方法只适用于Debian GNU/Linux 及其衍生版)。系统:GNU/Linux Debian/etchApache当前版本: 2.4.21、安装:使用以下命令安装:tony@tonybox:~$sudo aptitude update aptitude install apache2 apache2-utils其中apache2-utils提供了我们在配置维护过程中非常有用的一些工具安装完成后,可以使用下面的命令启动Apache 服务:tony@tonybox:~$ sudo /etc/init.d/apache2 start停止Apache服务则是:tony@tonybox:~$ sudo /etc/init.d/apache2 stop也可以直接用 kill 命令强制杀死apache2进程tony@tonybox:~$ sudo killall apache2如有需要, 可以通过rcconf来控制是否在系统启动时加载Apache 服务启动完成后打开浏览器, 使用URL http://localhost/ 来访问已经启动的Apache服务器, 服务器将会跳转到 http://localhost/apache2-default/, 向浏览器返回一个Apache安装成功的页面。注: 这取决于/etc/apache2/sites-available/default 配置文件中, 是否取消了RedirectMatch ^/$ /apache2-default/行的注释2、 配置文件说明在Debian下, 安装完成后, 软件包为我们提供的配置文件位于/etc/apache2目录下:tony@tonybox:/etc/apache2$ ls -ltotal 72-rw-r--r-- 1 root root 12482 2006-01-16 18:15 apache2.conf-rw-r--r-- 1 root root 748 2006-01-16 18:05 envvars-rw-r--r-- 1 root root 268 2006-06-30 13:56 httpd.conf-rw-r--r-- 1 root root 12441 2006-01-16 18:15 magic-rw-r--r-- 1 root root 10 2006-06-30 13:56 ports.conf-rw-r--r-- 1 root root 2266 2006-01-16 18:15 READMEdrwxr-xr-x 2 root root 4096 2006-01-16 18:15ssl其中apache2.conf为apache2服务器的主配置文件, 查看此配置文件, 你会发现以下内容# Include module configuration:Include /etc/apache2/mods-enabled/*.loadInclude /etc/apache2/mods-enabled/*.conf# Include all the user configurations:Include /etc/apache2/httpd.conf# Include ports listingInclude /etc/apache2/ports.conf# Include generic snippets of statementsInclude /etc/apache2/conf.d/[^.#]*由此可见, apache2 根据配置功能的不同, 对配置文件进行了分割, 这样更利于管理conf.d下为配置文件的附加片断,默认情况下, 仅提供了 charset 片断,tony@tonybox:/etc/apache2/conf.d$ cat charsetAddDefaultCharset UTF-8如有需要我们可以将默认编码修改为 GB2312, 即文件的内容为: AddDefaultCharset GB2312httpd.conf是个空文件magic文件中包含的是有关mod_mime_magic模块的数据, 一般不需要修改它。ports.conf则为服务器监听IP和端口设置的配置文件,tony@tonybox:/etc/apache2$ cat ports.confListen 80mods-available目录下是一些。conf和。load 文件, 为系统中可以使用的加载各种模块的配置文件, 而mods-enabled目录下则是指向这些配置文件的符号连接, 从配置文件apache2.conf 中可以看出, 系统通过mods-enabled目录来加载模块, 也就是说, 系统仅通过在此目录下创建了符号连接的mods-available 目录下的配置文件来加载模块。同时系统还提供了两个命令 a2enmod 和 a2dismod用于维护这些符号连接。这两个命令由 apache2-common 包提供。命令各式也非常简单: a2enmod [module] 或 a2dismod [module]sites-available目录下为配置好的站点的配置文件, sites-enabled 目录下则是指向这些配置文件的符号连接, 系统通过这些符号连接来起用站点 sites-enabled目录下的符号连接附有一个数字前缀, 如000-default, 这个数字用于决定启动顺序, 数字越小, 启动优先级越高。 系统提供了两个命令 a2ensite 和 a2dissite 用于维护这些符号连接。这两个命令由 apache2-common 包提供。/var/www默认情况下将要发布的网页文件应该置于/var/www目录下,这一默认值可以同过主配置文件中的DocumentRoot 选项修改。注意:如果你在是windows下应用Apache服务器,并且已经安装IIS,那么在安装Apache时请注意给Apache换个端口来监听比如8080,否则Apache占用的端口会和IIS冲突,造成Apache服务器不能正常启动。3.启用SSL让apache更安全apache加密TCP/IP网络产品的标准是SSL ,对于Internet上普遍使用的超文本传输协议(HTTP)而言,其加密后的协议称为 HTTPS,缺省采用443端口。HTTPS数据是加密以后传输的,因此能有效保护在网络上传输的个人隐私信息。对apache配置支持SSL需要经过如下的操作:第一步:下载所需的软件并解开到 /usr/local/src 目录Apache 1.3.24Mod_ssl 2.8.8-1.3.24Openssl-0.9.6c每个 mod_ssl 的版本和特定的 Apache 版本有关,因此要下载相对应的 mod_ssl 版本。第二步:编译和安装安装 OpenSSL 到 /usr/local/ssl: # pwd/usr/local/src/openssl-0.9.6c# ./config# make# make test# make install安装 mod_ssl,编译进 Apache 的源码树: # pwd/usr/local/src/mod_ssl-2.8.8-1.3.24# ./configure --with-apache=/usr/local/src/apache_1.3.24 \--with-ssl=/usr/local/ssl以 DSO 方式编译 Apache: # pwd/usr/local/src/apache_1.3.24# ./configure --prefix=/usr/local/apache --enable-rule=SHARED_CORE \--enable-module=ssl --enable-shared=ssl# make创建 SSL 证书,证书需要从商业的认证权威机构或者从内部的 CA 得到。执行下面的步骤生成证书: # pwd/usr/local/src/apache_1.3.24# make certificate TYPE=custom生成证书时会提示两遍下面的信息: 内为示范数据。第一遍: Country Name (2-letters)State or Province NameLocality NameOrganization NameOrganizational Unit NameCommon NameEmail AddressCertificate Validity 第一遍会产生一个用于测试的 CA。Common Name 可以为任意文本。第二遍 Country Name (2-letters)State or Province NameLocality NameOrganization NameOrganizational Unit NameCommon NameEmail AddressCertificate Validity 第二遍产生的是实际可用的证书,能被商业机构或者内部 CA 认证, Common Name 为 Web 服务器的主机名。安装并运行 Apache # pwd/usr/local/src/apache_1.3.24# make install启动 Apache ,并测试 # pwd/usr/local/apache/bin# ./apachectl stop# ./apachectl startssl在浏览器上检查你的站点正常与否即可,至此即可让apache支持安全的SSL。在Apache 1.4以后的版本,我们还可以用以下命令完成服务的完美重启:#./apachectl graceful

Apache常用配置指北

Apache 作为世界使用排名第一的Web服务器软件,它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一

相信前端的小伙伴对于 apache 和 nginx 都有所了解,特别是前后端分离,独立开发部署后,使用web服务器做一些代理服务可以解决绝大多数因为前后端分离造成的跨域,认证等问题(PS:都2020年了,不会还有项目组主张使用weblogic或tomcat部署前端项目吧? 不会吧,不会吧,不会吧 😓)

下面,我从实际项目角度出发,说一些apache常用配置,相信做到以下配置之后,基本可以解决前端项目部署对接时80%以上的问题 (😃 我骗你的,我怎么知道能解决多少,反正先说一个数嘛)

示例:

Directory指令用于在配置的目录(示例内'/apache/web'目录)内封装一组指令,配置的指令在该目录及子目录生效。任何可以在"directory"作用域中使用的指令都可以使用

从安全性考虑,根目录的AllowOverride属性一般都配置成不允许任何Override, 即设置 AllowOverride None ,此时,配置目录及子目录的.htaccess 文件将被完全忽略。

当此指令设置为 All 时,所有具有 “.htaccess” 作用域的指令都允许出现在 .htaccess 文件中

示例:

apache的Alias配置即虚拟路径配置,如示例中,假设apache服务器启动地址为 http://localhost:3000 ,当访问 http://localhost:3000/public/test.mp4 时, 会返回服务器 /extra/video/public/test.mp4 视频文件。

示例:

示例效果为将输入 en.cmbc.com 时,跳转到 http://www.cmbc.com.cn/

Apache Rewrite规则修正符

Rewirte即apache的重写规则,主要的功能就是实现URL的跳转,匹配规则支持正则匹配。

示例:

apache中的mod_proxy模块用于url的转发,即具有代理的功能。

ProxyPass即转发功能,如示例中的配置,为将 http://localhost:3000/swaggerui 的请求转发至 http://197.0.35.4:7000/swaggerui 服务器.

ProxyPassReverse 的配置和 ProxyPass 的配置一致,它用于反向代理,例如示例中请求 http://localhost:3000/swaggerui 后,转发给配置的目标服务器( http://197.0.35.4:7000swaggerui ),返回的处理结果为重定向redirect至 http://197.0.35.4:7000/login.html 登录页,此时若未配置反向代理,浏览器会访问 http://197.0.35.4:7000/login.html ,而配置反向代理后,apache服务器会在重定向时,修改redirect地址为 http://localhost:3000/login.html 。

示例:

负载均衡配置稍显复杂,后续会专门总结一下相关配置,以上示例配置所达到的效果为:请求 http://localhost:3000/version_manager 时,会均衡负载发至 http://197.0.35.105:31382/version-manager 和 http://197.0.35.105:31382/version-manager 两台服务器。

示例:

启用Apache的deflate模块,可以开启压缩功能,减小网站传输时的带宽。


apache配置文件详解(apache设置的基本配置)

Apahce配置指令可以分为两块,核心指令和第三方提供的指令。在apache中,每条指令对应一个模块,而在所有模块中,最重要的是core _ module、so_moudle、http _ module和mpm模块。除了so _ mold,其他模块都不能关闭或禁止。一:httpd.conf主服务器部分1.ServerName:定义apache的默认主机名,可以是域名或IP地址。2.ServerRoot:用于定义服务器所在的目录。在配置过程中,该路径通常由-前缀指定。3.DocumentRoot:用于指定apache提供页面服务的根目录。该路径必须是绝对路径,而不是相对路径。如果有空格,需要用引号括起来。4.ServerAdmin:发生错误后服务器向管理员发送电子邮件的地址。5.ServerAlias和Alias:两者都用于映射目录,只是ServerAlias将映射的目录识别为CGI脚本目录,并将该目录中的所有文件视为CGI脚本。但是Alias只映射到一个普通的目录。6.用户和组:用于定义用于运行apache子流程的用户和用户组。7.Listen:用于定义监听apache的端口号。8.LoadModule指令:用于加载模块或目标文件load module CGI _ module modules/mod _ CGI . so _ module。9.错误文档:错误文档500 quot未知错误 quot错误文档404 quot自我意义的错误页面信息/var/server/www/CGI-bin/missing _ 404 . pl 错误文档40210.选项:决定在哪些目录中使用这些功能。这些特征如下:无:选项命令不起作用。Exec:允许CGI脚本在当前目录中执行。包括:允许SSI函数。允许使用IncludesNOEXEC: SSI函数,但禁用exec cgi和exec cmd函数。索引:打开索引功能。例如,如果在请求目录的URLz中没有由DirectoryIndex指令指定的索引文件,服务器将自动返回请求目录的内容列表。在当前环境中允许符号连接,但是在位置容器中将被忽略。All:使用除多视图之外的所有功能,这也是选项的默认参数。MultiViews:用于启动mod_negotiations模块提供的多视图功能。1.ServerTokens: OS/Major/Full会影响页脚信息的细节,所以一般不建议使用。集装箱部分1.IfModule容器:容器作用于模块,会先判断模块是否加载,再决定是否处理,即只有判断结果为真,才会执行容器中的指令;否则,如果为false,所有指令都将被忽略。可以使用IfModule模块名或IfModule!模块名来确定模块是否已加载。如果模块mpm_netware_moduleindex.html目录索引/IfModule加载后执行。IfModule!mpm _ netware _模块index.html目录索引/IfModule如果未加载,则执行。2 IfDefine容器:它封装了一组只在条件为真时才生效的指令,作用于serverconfig、虚拟主机、目录、htaccess和IfModule。不同的是它判断模块是否加载,而IfDefine判断的是条件。根据if定义代理load module proxy _ module modules/lib proxy . so/IfDefine3目录目录匹配容器:目录:让它封装的指令在它指定的目录或者子目录下工作。该目录必须是完整的路径。当然,也可以使用通配符*?匹配目录,也考虑用来确定字符范围,但是无论哪一个都可以匹配/目录/var/apache/html订单拒绝,允许全部否认/目录上面的示例禁止访问/var/apache/html目录。对/var/apache/html的任何请求都将被拒绝。如果想让目录使用正则表达式,需要加一个~目录~《^/var/apache{2}/html》订单拒绝,允许允许所有人/目录DirectoryMatch:类似于directory,只是它可以直接接受常规匹配,不需要添加~符号。导演匹配《^/var/apache{2}/html》订单拒绝,允许允许所有人/目录匹配4文件和文件匹配文件:仅适用于文件。也可以在正则表达式前使用通配符和和~来使用正则表达式。文件“^.css 订单拒绝,允许允许所有人/文件匹配:没有添加~符号的文件。文件匹配”。,然后是文件和文件匹配容器,然后是位置和位置匹配容器。位置/var/apache/html订单拒绝,允许允许所有人/位置Direcotry /var/apache/html订单允许、拒绝允许所有人否认来自www.jons.com/Direcotry在上面的例子中,Apache将首先处理目录容器,最后处理的位置容器将覆盖以前的目录配置,因此www.json.com将被允许用户访问。如果容器相同,将根据字典顺序从短到长进行处理。王者之心2点击试玩


上一篇:热气球原理

下一篇:没有了