apache常见配置

常用的配置文件:
/etc/httpd/conf.d/*.conf ###辅助配置文件
/etc/httpd/conf/httpd.conf ###主配置文件
/etc/sysconfig/httpd ###httpd工作模式配置文件
apache配置主要就是修改配置文件,apache的主配置文件在/etc/httpd/conf/httpd.conf.
ServerRoot
服务目录
ServerAdmin
管理员邮箱
User
运行服务的用户
Group
运行服务的用户组
ServerName
网站服务器的域名
DocumentRoot
网站数据目录
Listen
监听的IP地址与端口号
DirectoryIndex
默认的索引页页面
ErrorLog
错误日志文件
CustomLog
访问日志文件
Timeout
网页超时时间,默认为300秒

1.网站根目录配置
apache的默认数据目录是:/var/www/html/下,如果想修改可以直接修改配置文件/etc/httpd/conf/httpd.conf的DocumentRoot字段。
相对应的124行也需要修改。
apache常见配置
2.个人主页配置
httpd服务程序中,默认没有开启个人用户主页功能。为此,我们需要编辑/etc/httpd/conf.d/userdir.conf配置文件,然后在第17行的UserDir disabled参数前面加上井号(#),表示让httpd服务程序开启个人用户主页功能;同时再把第24行的UserDir public_html参数前面的井号(#)去掉(UserDir参数表示网站数据在用户家目录中的保存目录名称,即public_html目录)。最后,在修改完毕后记得保存。
apache常见配置
修改之后,重启apache,systemctl restart httpd.service.重启之后切换成普通用户然后在普通用户的家目录创建public_html目录,然后在public_html里面添加index.html,然后修改目录权限为755.
apache常见配置
然后在浏览器的地址栏中输入网址,其格式为“网址/~用户名”(其中的波浪号是必需的,而且网址、波浪号、用户名之间没有空格)
3.虚拟主机配置
  • 基于ip地址的虚拟主机
基于ip地址的虚拟主机配置的前提是,你的主机有多个ip地址,访问不同的ip地址apache会虚拟出不同的主机
<VirtualHost 192.168.137.22:80>
DocumentRoot "/data/www1"
ServerName www.csr.com
</VirtualHost>
访问192.168.137.22时apache会把/data/www1当做网站的根目录。
<VirtualHost 192.168.137.23:80>
DocumentRoot "/data/www2"
ServerName www.test.com
</VirtualHost>
访问192.168.137.23时apache会把/data/www1当做网站的根目录。
  • 基于域名的虚拟主机
一台主机也有可能绑定多个域名,访问不同的域名也会虚拟出不同主机
<VirtualHost *:80>
DocumentRoot "/data/www1"
ServerName www.csr1.com # 域名1
</VirtualHost>
访问www.csr1.com时apache会把/data/www1当做网站的根目录。
<VirtualHost *:80>
DocumentRoot "/data/www2"
ServerName www.csr2.com # 域名2
</VirtualHost>
访问www.csr2.com时apache会把/data/www2当做网站的根目录。
  • 基于端口号的虚拟主机
如果是基于端口号的虚拟主机就需要Listen不同的端口号
<VirtualHost *:8080>
DocumentRoot "/data/www1"
ServerName www.csr.com
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/data/www2"
ServerName www.csr.com
</VirtualHost>
4.访问控制
<Directory></Directory>目录设置,在中间可以加入一些目录参数,示例如下:
<Directory "/">
Options Indexes
AllowOverride None
order allow,deny
allow from all
</Directory>
allow指令
对于一个目录来说,allow指令设置允许哪些主机访问
all:所有主机
或 域名:eloo.com
或 一个完整IP:192.168.0.1
网络号码/子网掩码:192.168.0.0/255.255.255.0
网络号码/nnn:192.168.0.0/24 表示一段范围的ip地址
deny指令
对于一个目录来说,allow指令设置禁止哪些主机访问
-all:所有主机
或 域名:eloo.com
或 一个完整IP:192.168.0.1
网络号码/子网掩码:192.168.0.0/255.255.255.0
网络号码/nnn:192.168.0.0/24 表示一段范围的ip地址
order指令
控制处理allow和deny指令的顺序
如上例:
order allow,deny
deny from all
allow from host11
5.域名跳转,重定向
<VirtualHost *:80>
DocumentRoot "/data/www"
# 新域名
ServerName www.csrnew.com
# 别名(老域名)
ServerAlias www.csr.com
<If "(%{HTTP_HOST} == 'www.csr.com') || (%{HTTP_HOST} == 'csr.com') || (%{HTTP_HOST} == 'csrnew.com')">
# 301重定向
Redirect permanent / http://www.csrnew.com/
</If> # 后面继续判断,比如其他人用www.nocsr.com域名绑定你的IP,加上这个他就访问不到了(403 Forbidden) # 自己测试的时候改hosts绑定IP即可,看看是不是403 Forbidden
<ElseIf "!(%{HTTP_HOST} == 'www.csrnew.com') && !(%{HTTP_HOST} == 'localhost')">
Require all denied
</ElseIf>
</VirtualHost>
6.屏蔽制定useragent
# <If "!(%{HTTP_USER_AGENT} =~ /google/i) && !(%{HTTP_USER_AGENT} =~ /chrome/i)">
# Require all denied
# </If>
只允许chrome浏览器访问
7.防止盗链
有时候,你的网站莫名其妙的访问量变大,不要高兴的太早,有可能是被别人盗链了...举个例子:比如我搭的这个discuz论坛,有人发了一个贴,里面全是些xxx图片视频;然后将他网站*问图片的地址重定向到我的discuz上,这样他的服务器就可以空闲出来了;也就是说别人访问他网站的图片视频,消耗的确是你服务器的资源;网络*问xxx图片视频的人很多,这样就很有可能导致你的discuz负载超核挂了;解决这个问题的方法是配置下防盗链,让外来的盗不了链;(不过最本质的方法还是自己定期删除些违法的内容,没有这些违法内容别人也不会去盗链)
# 对视频图片压缩包等比较耗资源的做下防盗链
SetEnvIfNoCase Referer "^http://www.csr.com" local_ref
SetEnvIfNoCase Referer "^http://csr.com" local_ref
<filesmatch "\.(mp3|mp4|zip|rar|jpg|gif|png)">
# 2.4版本以下的
方法一:
Order Deny,Allow
Allow from env=local_ref
Deny from all
方法二:
Order Allow,Deny
Allow from env=local_ref
# 2.4版本以上,方法如下:
    Require all denied
Require env local_ref
</filesmatch>
8.设置别名和ErrorDocument
1、自定义404 not found 页面
# vim vhost.conf加入
ErrorDocument 404 "/csrtest/not_found.html"
# cat not_found.html
<html><title>404</title><body>...not found...</body></html>这样以后只要是404 not found就会显示not_found.html的内容了
2、Alias URL路径 文件系统的绝对路径
# Alias指令使文档可以被存储在DocumentRoot以外的本地文件系统中# 下面的是将URL/csr2映射到系统的/data/www/csrtest下
# 例如请求www.csr110.xyz/csr2/1.php,apache则会读取/data/www/csrtest/1.php的内容# Alias /csr2 /data/www/csrtest
9.配置静态文件缓存
配置静态缓存可以减少浏览器下载同一资源的次数,同时也可以减轻服务器的压力和节省带宽;比如说浏览器请求一个csr.html,该html里面包含一张csr.png图片;没有配置静态缓存则每次请求都要重新加载下csr.png图片;而配置了静态缓存则在有效期内不会再请求该图片。

# 首先要开启mod_expires模块(取消前面的注释'#')
[root@csr ~]# vim /usr/local/apache2/conf/httpd.conf
LoadModule expires_module modules/mod_expires.so
[root@csr ~]# apachectl -t
Syntax OK
# 检查模块是否正确开启
[root@csr ~]# apachectl graceful
[root@csr ~]# apachectl -M |grep expires_module
expires_module (shared)
# 开始配置静态缓存
[root@csr ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
<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 hour"
ExpiresByType application/x-javascript "now plus 2 hours"
ExpiresByType application/x-shockwave-flash "now plus 2 hours"
ExpiresDefault "now plus 0 min"
</IfModule>