阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache的几种常用配置

417次阅读
没有评论

共计 5568 个字符,预计需要花费 14 分钟才能阅读完成。

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

     下面介绍几个常用的 apache 命令:

/usr/local/apache2/bin/apachectl -M  查看常见的模块(包括动态和静态)

/usr/local/apache2/bin/apachectl -l    查看加载的静态模块

/usr/local/apache2/bin/apachectl -t    检查配置文件有无语法错误

/usr/local/apache2/bin/apachectl graceful  加载配置文件,但不重启

/usr/local/apache2/bin/apachectl start/restart/stop   启动 / 重启 / 停止 apache 服务

下列的配置在 apache2.2.31 版本实测。

一、用户认证

有些时候访问网站下的一些页面时,需要用户认证。

编辑虚拟主机的配置文件:

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

写入:

  <Directory /data/www/abc>     #/data/www/abc 为将要访问的页面的目录

     AllowOverride AuthConfig

     AuthName “cct”        

     AuthType Basic

     AuthUserFile /data/.htpasswd  #指定存放用户名和密码的文件

     require valid-user

  </Directory>

  保存退出,生成密码文件

  htpasswd -c /data/.htpasswd cct #指定用户名为 cct,输入自己设定的密码

 /usr/local/apache2/bin/apachectl graceful  加载配置

     二、默认虚拟主机

   有些时候,为了 web 服务安全性,我们需要设置默认的虚拟主机。

    编辑虚拟主机的配置文件:

  <VirtualHost *:80>

    DocumentRoot “/tmp/111”     #该目录可以不存在

    ServerName 111.com

  </VirtualHost>

  <VirtualHost *:80>

    DocumentRoot “/data/www”

    ServerName www.test.com

    ServerAlias www.aaa.com

   </VirtualHost>

将这段设定放在虚拟主机配置的最上面。除了已作过设置的域名(aaa、test)外,其余访问的域名均跳转到 /tmp/111 下。

  三、rewrite 规则

下列代码均写在 <IfModule mod_rewrite.c> 模块下

1. 域名 301 跳转

  web 服务可能会用到多个域名,域名有主有次,输入次域名会自动跳转到主域名进行访问。设定为 301 永久跳转,302 是暂时跳转。

编辑虚拟主机的配置文件:

写入:

   <IfModule mod_rewrite.c>

        RewriteEngine on      #打开 rewrite 功能

        RewriteCond %{HTTP_HOST} ^www.aaa.com$ [OR]

        RewriteCond %{HTTP_HOST} ^www.bbb.com$ 

        RewriteRule ^/(.*)$ http://www.test.com/$1 [R=301,L]  

   </IfModule>   

 调用了 rewrite 模块,RewriteCond 是跳转条件,RewriteRule 是跳转规则。 

2. 禁止指定 user_agent

  RewriteCond %{HTTP_USER_AGENT} ^.*curl.* [NC,OR]  #禁止 curl 和 chrome 浏览器访问

  RewriteCond %{HTTP_USER_AGENT} ^.*chrome.* [NC]  #NC 是不区分大小写的意思

  RewriteRule .* – [F]   #为禁止的意思

3. 通过 rewrite 限制某个目录

 RewriteCond %{REQUEST_URI} ^.*/tmp/.* [NC]  #禁止访问 tmp 目录

  RewriteRule .* – [F]

4.rewrite 规则

1) [R=301](force redirect) 强制外部重定向

2) [F]禁用 URL, 返回 403HTTP 状态码

3)[NC](no case) 不区分大小写

4)[OR] 或者

变量:

%{HTTP_USER_AGENT}      表示:访问的 user_agent

%{HTTP_HOST}    表示:当前访问的网址,只是指前缀部分,格式是 www.xxx.com 不包括“http://”和“/”

%{REQUEST_URI}     表示:表示访问的相对地址,就是相对根目录的地址,就是域名 / 后面的成分,格式上包括最前面的“/”,

www.123.com/xiang/1.html 黑字表示 HOST,绿色部分表示 URI

四、日志切割与管理

 web 服务器出现大量的访问日志和错误日志,所以我们要对日志进行切割,方便管理人员的查询。一些并不重要的记录,我们可以规定日志中不显示这些。

 首先我们先将虚拟主机配置文件里的日志记录打开,日志的 路径在/usr/local/apache2/logs 下

 ErrorLog “logs/test.com-error_log”  #错误日志

 CustomLog “logs/test.com-access_log” common    #common 是日志类型

 在 apache 的主配置文件里我们可以看到���志的相关格式规定

 LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\”” combined

 LogFormat “%h %l %u %t \”%r\” %>s %b” common

 %h 是来源 ip

 %u 访问的 user

 %t 时间

 %r 动作

 有些时候一些用户使用代理服务器,这里的 %h 会显示代理 ip,在 %h 后面加上%{X-FORWARDED-FOR}i 即显示真实 ip。

1. 日志切割

修改虚拟主机的 access log 的定义:

  CustomLog “|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400” combined      #%Y%m%d 规定年月日;86400 秒即为一天切割。

2. 不记录指定文件类型的日志

   ErrorLog “logs/test.com-error_log”

 SetEnvIf Request_URI “.*\.gif$” image-request   #对 gif 文件做一个标记 image-request,也可以写成 abc  

 SetEnvIf Request_URI “.*\.jpg$” image-request     #setenvif 要和 customlog 写在一起

 SetEnvIf Request_URI “.*\.png$” image-request

 SetEnvIf Request_URI “.*\.bmp$” image-request

 SetEnvIf Request_URI “.*\.swf$” image-request

 SetEnvIf Request_URI “.*\.js$” image-request

 SetEnvIf Request_URI “.*\.css$” image-request

 CustomLog “|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/test.com-access_%Y%m%d_log 86400” combined env=!image-request     #不记录做过标记的文件

注意:SetEnvIf 要和 customlog 写在一起,中间不要有分隔。

五、配置静态缓存

对于图片,html,css,Javascripts 等,让客户端缓存,让访问时不需要去服务器上访问,提高用户体验,需要提前确认是否支持 mod_expires.c 模块

<IfModule mod_expires.c>

  ExpiresActive on

  ExpiresByType image/gif  “access plus 1 days”

  ExpiresByType image/jpeg “access plus 24 hours”

  ExpiresByType image/png  “access plus 24 hours”

  ExpiresByType text/css   “now plus 2 hours”

  ExpiresByType application/x-javascript      “now plus 2 hours”

  ExpiresByType application/x-shockwave-flash “now plus 2 hours”

  ExpiresDefault “now plus 0 min”

</IfModule>

 

六、配置防盗链

 

  防止其他的网站大量使用自己网站里的一些图片,流量跑的是自己的网站,造成带宽的浪费。防止图片被盗用。

在虚拟主机的配置文件里加上:

SetEnvIfNoCase Referer “^http://.*\.test\.com” local_ref  #给网址做标注

    <filesmatch “\.(txt|png|gif|doc|mp3|zip|rar|jpg|css|js)”>  #规定一下哪些类型的文件

    Order Allow,Deny                             #禁止引用 

    Allow from env=local_ref                      #允许 local_ref 引用

</filesmatch>

七、访问控制

 

我们可以针对某些目录进行访问控制,禁止一些 IP 地址的访问

<Directory “/data/www”>

    AllowOverride None

    Options None

    Order allow,deny

    Allow from all

    deny from 192.168.206.1    #该 IP 地址为禁止访问的 ip 地址 

</Directory>

还有一种以 URI 做限制访问

<filesmatch “(.*)admin(.*)”>

    Order allow,deny

    Allow from all

    Deny from 192.168.206.1

</filesmatch>

所有 uri 中包括 admin 的都进行 ip 访问限制

八、apache 禁止解析 php

多用在在网络安全方面,比如:某些目录上传文件,避免上传的有木马,针对某些路径禁止解析 php。

编辑虚拟主机的配置文件,加入:

<Directory /data/www/data>  #对 data 目录进行 php 解析限制。

php_admin_flag engine off  #将 php 解析引擎关闭

<filesmatch “(.*)php”>  #匹配

Order deny,allow

Deny from all   #禁止解析所有,若不加 filesmatch,只是将 engine off,在浏览器访问该文件时,会将 php 文件下载下来,这样不好

</filesmatch>

</Directory> 

Apache 的几种常用设置就整理到这,希望能够帮到运维的同仁们!

 

下面关于 LAMP 相关 的内容你可能也喜欢

 

LAMP 平台安装 Xcache 和 Memcached 加速网站运行  http://www.linuxidc.com/Linux/2015-06/118835.htm

 

CentOS 7 下搭建 LAMP 平台环境  http://www.linuxidc.com/Linux/2015-06/118818.htm

 

CentOS 6.5 系统安装配置 LAMP(Apache+PHP5+MySQL)服务器环境 http://www.linuxidc.com/Linux/2014-12/111030.htm

 

CentOS 7.2 yum 安装 LAMP 环境  http://www.linuxidc.com/Linux/2016-11/136766.htm

 

Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境  http://www.linuxidc.com/Linux/2014-10/107924.htm

 

Ubuntu 14.10 下安装 LAMP 服务图文详解  http://www.linuxidc.com/Linux/2014-12/110082.htm

 

LAMP 结合 NFS 构建小型博客站点  http://www.linuxidc.com/Linux/2015-08/121029.htm

 

CentOS7 下安装部署 LAMP 环境  http://www.linuxidc.com/Linux/2016-04/130653.htm

 

Ubuntu Server 14.04 LTS 下搭建 LAMP 环境图文详解  http://www.linuxidc.com/Linux/2016-12/138758.htm

 

Ubuntu Server 16.04 下配置 LAMP 环境 http://www.linuxidc.com/Linux/2016-12/138757.htm

 

Ubuntu 16.04 搭建 LAMP 开发环境 http://www.linuxidc.com/Linux/2016-10/136327.htm

 

 

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/140071.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计5568字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7964597
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...