二. Apache配置
2021-05-05 14:29
标签:env 错误日志 drive tor conf das 规则 main day 是一种在单一主机或主机群上,实现多网域服务的方法,可以运行多个网站或服务的技术。虚拟主机之间完全独立,并可由用户自行管理,虚拟并非指不存在,而是指空间是由实体的服务器延伸而来,其硬件系统可以是基于服务器群,或者单个服务器。 #vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //编辑虚拟主机配置文件 ServerAdmin admin@wang.com DocumentRoot "/data/wwwroot/test0920.com" ServerName test0920.com ServerAlias www.testdomain.com ErrorLog "logs/aming.com-error_log" CustomLog "logs/aming.com-access_log" common DocumentRoot "/data/wwwroot/testdomain.com" ServerName www.testdomain.com //ServerAdmin指定管理员邮箱, //DocumentRoot为该虚拟主机站点的根目录, //ServaerName为网站的域名 //ServerAlias为网站的第二域名 //ErrorLog为站点的错误日志 //CustomLog为站点的访问日志 #mkdir -p /data/wwwroot/test0920.com /data/wwwroot/testdomain.com #echo “www.test0920.com” > /data/wwwroot/test0920.com/index.html //网站默认的主页就是index.html #echo “www.testdomain.com” > /data/wwwroot/testdomain.com/index.html #/usr/local/apache2.4/bin/apachectl -t #/usr/local/apache2.4/bin/apachectl graceful #curl -x127.0.0.1:80 www.test0920.com www.test0920.com //访问www.test0920.com/index.html www.test0920.com #curl -x127.0.0.1:80 www.testdomain.com www.testdomain.com #curl -x127.0.0.1:80 www.abc.com www.test0920.com 用户认证用来对某些目录中的网页进行访问控制, 当用户访问这些页面的时候需要输入用户名密码进行认证 #vim /usr/local/apache2.4/conf/extra/httpd-vhost.conf DocumentRoot "/data/wwwroot/testdomain.com" ServerName www.testdomain.com // 指定认证的目录 AllowOverride AuthConfig // 这个相当于打开认证的开关 AuthName "testdomain.com user auth" //自定义认证的名字,作用不大 AuthType Basic //认证的类型,一般为Basic AuthUserFile /data/.htpasswd //指定密码文件所在位置 require valid-user // 指定需要认证的用户为全部可用用户 #/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd test //htpasswd为创建用户的工具,-c为creat //-m为指定密码加密的方式为MD5 //data/.htpasswd为密码文件, //test为创建的用户。第一次执行需加-c //第二次不用加,否则密码文件会重置 #/usr/local/apache2.4/bin/apachectl -t Syntax OK //验证配置文件是否有问题 #/usr/local/apache2.4/bin/apachectl graceful 配置完可在windows上访问www.testdomain.com 文件在C:\Windows\System32\drivers\etc\hosts 打开在最后一行输入 #你的IP www.testdomain.com 然后去浏览器访问会有弹窗 当我们变更网站域名,或者申多个域名指向一个网站的时候,这个时候我们就会 用到域名跳转 把123.com域名跳转www.123.com 配置如下: DocumentRoot "/data/wwwroot/testdomain.com" ServerName www.testdomain.com ServerAlias testdomain.com RewriteEngine on // 打开rewrite功能 RewriteCond %{HTTP_ HOST} !^www.testdomain.com$ //定义rewrite的条件,当主机名不是www.testdomain.com时满足条件 RewriteRule ^/(. *)$ http://www.testdomain.com/$1 [R=301,L] //定义rewrite规则,RewriteRule后面分为三个部分,第一部分为当前网址 //第二部分为要跳转的网址,第三部分是选项,需要括号括起来。 要实现跳转,需要rewrite模块的支持,所以查看是否安装该模块 如果没有则还需要一些配置: #/usr/lkocal/apache2.4/bin/apachectl -M |grep -i rewrite //如果没有输出则需要继续编辑 #vim /usr/local/apache2.4/conf/httpd.conf //搜索rewrite,把前面#去掉 #/usr/local/apache2.4/bin/apachectl graceful #/usr/local/apache2.4/bin/apachectl -M |grep -i rewrite Rewrite_module(share) //有这行输出,说明正常加载rewrite模块 #curl -x127.0.0.1:80 -I testdomain.com //可以看见状态码301,跳转的网址是www.testdomain.com 访问日志作用很大,不仅可以记录网站的访问情况,还可以在网站有异常发生时帮助我们定位问 # vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf //把123.com虚拟主机改写如下 DocumentRoot " /data/wwwroot/testdomain.com" ServerName www.testdomain.com ServerAlias testdomain.com RewriteEngine on RewriteCond %{HTTP_ HOST} !^www. domain. com$ RewriteRule ^/(.*)$ http://www.testdomain.com/$1 [R=301,L] Customlog "1ogs/testdomain. com-access_ log" combined 保存配置文件 后,测试语法并重新加载配置: #/usr/local/apache2.4/bin/apachectl -t Syntax OK #/usr/local/apache2.4/bin/apachectl graceful #curl -x127.0.0.1:80 -I testdomain.com #tail /usr/local/apache2.4/logs/testdomain-access_log 127.0.0.1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf DocumentRoot "/data/wwwroot/www.123.com" ServerName www.testdomain.com ServerAlias testdomain.com RewriteEngine on RewriteCond %{HTTP_HOST} !^www.testdomain.com$ RewriteRule ^/(.*)$ http://www.testdomain.com/$1 [R=301,L] SetEnvIf Request_URI ".*\.gif$" image-request SetEnvIf Request_URI ".*\.jpg$" image-request 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 "logs/testdomain1.com-access_log" combined //先定义了一个image-request环境变量,把gif,jpg,png, bmp,swf,js,css等格式文件全归类到此 保存配置后,测试配置文件是否正确,没有错误重新加载服务 #/usr/local/apache2.4/bin/apachectl -t Syntax OK #/usr/local/apache2.4/bin/apachectl graceful #curl -x127.0.0.1:80 -I testdomain.com #ls /usr/local/apache2.4/logs/ 123.com-access_2~~~~~~~~~~~~~~~~~~~~~~~~ # vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf DocumentRoot "/data/wwwroot/testdomain.com" ServerName www.testdomain.com ServerAlias testdomain.com RewriteEngine on RewriteCond %{HTTP_HOST} !^www.testdomain.com$ RewriteRule ^/(.*)$ http://www.testdomain.com/$1 [R=301,L] SetEnvIf Request_URI ".*\.gif$" image-request SetEnvIf Request_URI ".*\.jpg$" image-request 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.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined env=!image-request 保存配置后,测试配置文件是否正确,没有错误重新加载服务 #/usr/local/apache2.4/bin/apachectl -t Syntax OK #/usr/local/apache2.4/bin/apachectl graceful #touch /data/wwwroot/testdomain.com/aming.jpg #touch /data/wwwroot/testdomain.com/aming.txt #curl -x127.0.0.1:80 www.testdomain.com/aming.jpg #curl -x127.0.0.1:80 www.testdomain.com/aming.txt #cat /usr/local/apache2.4/logs/123.com-accesss_20~ 127.0.0.1——~~~~ 可以看到123.com-access~~日志中只有aming.txt的请求日志,但没有aming.jpg的 那到底能缓存多久呢?如果服务器上的某个图片更改了,那么应该访问新的图片才对。这就涉及一个静态文件缓存时长的问题,也叫作“缓存过期时间”。在httpd的配置文件中,我们是可以控制这 在httpd上我们可以控制文件过期时间,配置如下: #vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf DocumentRoot "/data/wwwroot/testdomain.com" ServerName www.testdomain.com ServerAlias testdomain.com DocumentRoot "/data/wwwroot/testdomain.com" ServerName www.testdomain.com ServerAlias testdomain.com RewriteEngine on RewriteCond %{HTTP_HOST} !^www.testdomain.com$ RewriteRule ^/(.*)$ http://www.testdomain.com/$1 [R=301,L] SetEnvIf Request_URI ".*\.gif$" image-request SetEnvIf Request_URI ".*\.jpg$" image-request 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.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined env=!image-request 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/javascript "now plus 2 hours" ExpiresByType application/x-shockwave-flash "now plus 2 hours" ExpiresDefault "now plus 0 min" //这里gif,jpeg, png格式的文件过期时长为1天,css. js. flash格式的文件过期时长为2小时 保存配置后,测试配置文件是否正确,没有错误重新加载服务 #/usr/local/apache2.4/bin/apachectl -t Syntax OK #/usr/local/apache2.4/bin/apachectl graceful 检查httpd是否加载expires模块: #/usr/local/apache2.4/bin/apachectl -M |grep -i expires //没有输出则说明当前httpd并不支持expires模块,所以需要修改配置文件 #vim /usr/local/apache2.4/conf/httpd.conf //搜索关键词expires,找到这一行 #LoadModule expires_ module modules/mod_ expires .so //把前面#删掉 #/usr/local/apache2.4/bin/apachectl graceful //重新加载服务 #/usr/local/apache2.4/bin/apachectl -M|grep -i expires expires_module(share) //有这行输出说明正确加载expires模块 下面进行测试: #curl -x127.0.0.1:80 -I www.testdomain.com/aming.txt #curl -x127.0.0.1:80 -I www.testdomain.com/aming.jpg //max-age=86400说明将缓存86400秒,max-age=0说明没有该类型缓存文件 防盗链,通俗讲,就是不让别人盗用你网站上的资源。这个资源,通常指的是图片、视频、歌曲、文档等。 配置防盗链先编辑主机配置文件: #vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf DocumentRoot "/data/wwwroot/testdomain.com" ServerName www.testdomain.com ServerAlias testdomain.com CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og86400"combined env=!image-request SetEnvIfNoCase Referer "http://www.testdomain.com" local_ref SetEnvIfNoCase Referer "http://testdomain.com" local_ref SetEnvIfNoCase Referer "^$" local ref Order Allow,Deny Allow from env=local_ref //首先定义允许访问链接的referer,其中^$为空referer, //当直接在浏览器里输入图片地址去访问它时,它的referer就为空。 #/usr/local/apache2.4/bin/apachectl -t Syntax OK #/usr/local/apache2.4/bin/apachectl graceful #curl -x127.0.0.1:80 -I -e “http://www.testdomain.com/testdomain.txt” http://testdomain.com/aming.jpg 状态码200 #curl -x127.0.0.1:80 -I -e “http://www.1234.com/1.txt” http://testdomain.com/aming.jpg 状态码403 #curl -x127.0.0.1:80 -I -e “http://www.testdomain.com/123.txt” http://www.123.com/index.html 状态码200 这样做的目的是防止别有用心的人拿到后台权限,并获得内部数据。 先来看看怎么限制IP访问,编辑配置文件 #vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf DocumentRoot "/data/wwwroot/testdomain.com" ServerName www.testdomain.com ServerAlias testdomain.com CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined Order deny,allow Deny from all Allow from 127.0.0.1 //Directory是用来指定限制访问的目录,order定义控制顺序 验证过程: #mkdir /data/wwwroot/testdomain.com/admin //创建admin目录,模拟网站后台 # echo “admin" > /data/wwwroot/testdomain.com/admin/index.html # > /usr/local/apache2. 4/1ogs/123.com-access_20170319.1og / # curl -x192.168. 188.128:80 -I testdomain.com/admin/index.html 状态码403 # curl -x127.0.0.1:80 -I testdomain.com/admin/index.html 状态码200 # cat /usr/local/apache2.4/logs/123.com-access_ 20~~~ 192.168.~~~ 127.0.0.1~~~ 访问控制也可以针对文件进行操作 编辑配置文件 #vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf DocumentRoot "/data/wwwroot/testdomain.com" ServerName www.testdomain.com ServerAlias testdomain.com CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined Order deny,allow Deny from all Allow from 127.0.0.1 验证过程如下: # /usr/local/apache2. 4/bin/apachectl -t Syntax OK # /usr/local/apache2 .4/bin/ apachectl graceful # touch /data/wwwroot/testdomain.com/admin/admin.php # curl -x127.0.0.1:80 www. 123. com/upload/1.php 状态码 200 #curl -x192.168.247.139:80 www.testdomain.com/admin/admin.php -I 状态码 403 把能上传文件的目录直接禁止PHP解析 配置如下: #vim /usr/local/apache2 .4/conf/extra/httpd-vhosts.conf DocumentRoot "/data/wwwroot/testdomain.com" ServerName www.testdomain.com ServerAlias testdomain.com CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined php_admin_flag engine off # /usr/local/apache2 .4/bin/apachectl -t Syntax OK # /usr/local/apache2 .4/bin/apachectl graceful # cp /usr/local/apache2 .4/htdocs/1. php /at/wwwroot/testdomain.com/upload/ # curl -x127.0.0.1:80 testdomain.com/upload/1.php echo "php解析正常"; ?> user_agent是指用户浏览器端的信息,比如你是用IE的,还是firefox的.有些网站会根据这个来调整打开网站的类型,如是手机的就打开wap,显示非手机的就打开pc常规页面. #vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf DocumentRoot "/data/wwwroot/testdomain.com" ServerName www.testdomain.com ServerAlias testdomain.com CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/123.com-access_%Y%m%d.1og 86400"combined RewriteEngine on RewriteCond %{HTTP_USER_AGENT} .*curl.* [NC,OR] RewriteCond %{HTTP_USER_AGENT} .*baidu.com.*[NC] RewriteRule .* - [F] //%{HTTP_USER_AGENT}为user_agent的内置变量,NC代表”不区分大小写”,F代表Forbidden,OR表示”或者” 验证过程: # /usr/local/apache2.4/bin/apachectl -t Syntax OK # /usr/local/apache2.4/bin/apachectl graceful #curl -I -x127.0.0.1:80 testdomain.com/upload/1.php 状态码403 #curl -A “123123” -I -x127.0.0.1:80 testdomain.com/upload/1.php 状态码200 二. Apache配置 标签:env 错误日志 drive tor conf das 规则 main day 原文地址:https://www.cnblogs.com/wft9/p/12108042.html2.1默认虚拟主机
2.1.1介绍
2.1.2配置
2.1.3配置验证
2.1.4验证成功
2.2用户认证
2.2.1介绍
2.2.2配置
2.2.3配置验证
2.3域名跳转
2.3.1介绍
2.3.2配置
2.3.3配置验证
2.4访问日志
2.4.1介绍
2.4.2配置
2.4.3配置验证
2.5访问日记不记录静态文件
2.5.1配置
2.5.2配置验证
2.6访问日记切割
2.6.1配置
2.6.2配置验证
2.7静态元素过期时间
2.7.1介绍
2.7.2配置
2.7.3配置验证
2.8配置防盗链
2.8.1介绍
2.8.2配置
2.8.3配置验证
2.9访问控制IP
2.9.1介绍
2.9.2配置
2.9.3配置验证
2.10访问控制Diretory\FileMatch
2.10.1简述
2.10.2配置
2.10.3配置验证
2.11限制某个目录禁止解析PHP
2.11.1简述
2.11.2配置
2.11.3配置验证
2.12限制user_agent
2.12.1介绍
2.12.2配置
2.12.3配置验证