常用的配置文件:


/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 配置身份认证 apache基本配置_apache



2.个人主页配置


httpd服务程序中,默认没有开启个人用户主页功能。为此,我们需要编辑 /etc/httpd/conf.d/userdir.conf 配置文件,然后在第17行的UserDir disabled参数前面加上井号(#),表示让httpd服务程序开启个人用户主页功能;同时再把第24行的UserDir public_html参数前面的井号(#)去掉(UserDir参数表示网站数据在用户家目录中的保存目录名称,即public_html目录)。最后,在修改完毕后记得保存。



apache 配置身份认证 apache基本配置_apache 配置身份认证_02



修改之后,重启apache,systemctl restart httpd.service.重启之后切换成普通用户然后在普通用户的家目录创建public_html目录,然后在public_html里面添加index.html,然后修改目录权限为755.



apache 配置身份认证 apache基本配置_Apache_03



然后在浏览器的地址栏中输入网址,其格式为“网址/~用户名”(其中的波浪号是必需的,而且网址、波浪号、用户名之间没有空格)


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>