Apache服务各功能实现方法
文章目录
一、Apache的目录别名(可用于使用别名访问网页)
1.编辑主配置文件:
# vim /usr/local/apache2/etc/httpd.conf
Include etc/extra/httpd-autoindex.conf #去掉注释,开启调用子配置文件
2.编辑子配置文件:
# vim /usr/local/apache2/etc/extra/httpd-autoindex.conf
alias /icons/ "/usr/local/apache2/icons/" #结构:别名 "真实目录"
#真实目录的结尾要有/,否则报错
<Directory "/usr/local/apache2/icons"> #可以根据模板编写一个自己需要的目录别名
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
二、Apache的用户认证(可用于保护后台登录界面)
1.编辑主配置文件:
# vim /usr/local/apache2/etc/httpd.conf
<Directory "/usr/local/apache2/htdocs/typecho/admin"> #声明被保护目录
Options Indexes FollowSymLinks
AllowOverride All #开启权限认证文件.htaccess
Require all granted
</Directory>
2.在指定目录下创建权限文件:
# cd /usr/local/apache2/htdocs/typecho/admin
# vim .htaccess
# AuthName "Welcome to kernel"
#提示信息
# AuthType basic
#加密类型
# AuthUserFile /usr/local/apache2/htdocs/typecho/admin/apache.passwd
#密码文件,文件名自定义。(使用绝对路径)
# require valid-user
#允许密码文件中所有用户访问
3.建立密码文件,加入允许访问的用户:
# yum -y install httpd
# htpasswd -c /usr/local/apache2/htdocs/typecho/admin/apache.passwd 账户名1
#-c 建立密码文件,只有添加第一个用户时,才能-c
# htpasswd -m /usr/local/apache2/htdocs/typecho/admin/apache.passwd 账户名2
#-m 在添加更多用户时,使用-m 参数
▲注意: htpasswd 该命令是httpd的命令,需要绝对路径
三、虚拟主机
1.编辑主配置文件,开启文件关联:
# vim /usr/local/apache2/etc/httpd.conf
Include etc/extra/httpd-vhosts.conf #此行取消注释,开启调用子配置文件
2.编辑子配置文件,编写虚拟主机标签:
# vim /usr/local/apache2/etc/extra/httpd-vhosts.conf
#删除原有,添加下方内容,有几个虚拟主机就写几组(添加之前先把原先存在的示例删除掉)
<Directory "/usr/local/apache2/htdocs/sina">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory> #目录权限标签根据需要自行添加
<VirtualHost 192.168.88.10:80> #虚拟主机标签(可以写本机IP或*)
ServerAdmin webmaster@sina.com #管理员邮箱
DocumentRoot "/usr/local/apache2/htdocs/sina" #网站主目录
ServerName www.sina.com #完整域名
ErrorLog "logs/sina-error_log" #错误日志
CustomLog "logs/sina-access_log" common #访问日志
</VirtualHost>
四、域名跳转
1.编辑主配置文件,开启重写模块:
# vim /usr/local/apache2/etc/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so #取消注释
2.修改虚拟主机配置文件:
# vim */extra/httpd-vhosts.conf
<Directory "/usr/local/apache2/htdocs/sohu">
Options Indexes FollowSymLinks
AllowOverride All #修改为All,开启sohu的.htaccess配置文件开关
Require all granted
</Directory>
3.在sohu网页目录下创建规则匹配文件:
# cd /usr/local/apache2/htdocs/sohu/
# vim */.htaccess
#在指定的网站目录下创建文件,并添加以下内容:
RewriteEngine on #开启rewrite功能
RewriteCond %{HTTP_HOST} ^www.sohu.com #把以www.sohu.com开头的内容赋值给HTTP_HOST变量
RewriteRule ^(.*)$ http://www.sina.com/$1 [R=permanent,L] # ^(.*)$ 指代客户端要访问的资源
# $1 把 .* 所指代的内容赋值到$1变量中
# R=permanent 永久重定向 = 301
# L 指定该规则为最后一条生效的规则,以后的不再生效
五、Apache+openssl实现https
1.编辑主配置文件,开启模块:
# vim /usr/local/apache2/etc/httpd.conf
LoadModule ssl_module modules/mod_ssl.so #取消注释
2.CA证书申请:
# cd /usr/local/apache2/etc
# mkdir ssl
# cd /usr/local/apache2/etc/ssl
# openssl genrsa -out httpd.key 1024
# openssl req -new -key httpd.key -out httpd.csr
# openssl x509 -req -days 365 -sha256 -in httpd.csr -signkey httpd.key -out httpd.crt
3.修改配置文件:
# vim /usr/local/apache2/etc/httpd.conf
LoadModule ssl_module modules/mod_ssl.so #取消注释
Include etc/extra/httpd-ssl.conf #取消注释
LoadModule socache_shmcb_module modules/mod_socache_shmcb.so #取消注释
#添加以下内容:
SSLProtocol all -SSLv2 -SSLv3 #添加SSL协议支持协议,去掉不安全的协议
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM #添加加密套件
SSLHonorCipherOrder on #添加是否启用证书加密模式,on:开启
DocumentRoot "/usr/local/apache2/htdocs/sina" #首页目录
ServerName www.sina.com:443 #域名:端口
ServerAdmin sina@sina.com #管理员
ErrorLog "/usr/local/apache2/logs/sina-ssl-error_log" #错误日志
TransferLog "/usr/local/apache2/logs/sina-ssl-access_log" #访问日志
#修改下内容:
SSLCertificateFile etc/ssl/httpd.crt #修改签字证书位置
SSLCertificateKeyFile etc/ssl/httpd.key #修改秘钥位置
若要实现强制跳转,则要进行以下操作:
# vim /usr/local/apache2/etc/extra/httpd-vhosts.conf
<Directory "/usr/local/apache2/htdocs/sina"> #在http部分的目录权限标签中添加以下内容
……
RewriteEngine on #开启转发规则
RewriteCond %{SERVER_PORT} !^443$ #检查访问端口只要目标不是443的
RewriteRule ^(.*)?$ https://%{SERVER_NAME}/$1 [R=301,L] #全都使用https重新访问
</Directory>
六、Apache日志切割
1.查看已经声明了的日志格式(之后调用格式时要调用此类格式):
# vim /usr/local/apache2/etc/httpd.conf

2.设置apache日志分割:
# vim /usr/local/apache2/etc/httpd.conf
ErrorLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/error_%Y%m%d.log 86400"
CustomLog "|/usr/local/apache2/bin/rotatelogs -l /usr/local/apache2/logs/access_%Y%m%d.log 86400" combined
七、不记录指定文件类型的日志
1.修改主配置文件:
# vim /usr/local/apache2/conf/httpd.conf
#添加或修改以下内容:
SetEnvIf Request_URI ".*\.gif$" image-request #SetEnvIf :声明
#image-request仅是声明的名字,类似于common,可随意设定
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 ... _%Y%m%d.log 86400" combined env=!image-request
#env=!image-request :表示取反,除了这些image-request以外的才会记录
八、Apache配置静态缓存
1.修改主配置文件,配置静态缓存:
# vim /usr/local/apache2/etc/httpd.conf
<IfModule mod_expires.c> #在文件最尾部添加
ExpiresActive on
ExpiresByType image/gif "access plus 1 days" #gif类型图片缓存一天
ExpiresByType image/jpeg "access plus 24 hours" #jpeg类型图片缓存一天
ExpiresByType image/png "access plus 24 hours" #png类型图片缓存一天
ExpiresByType text/css "now plus 2 hours" #css样式类型文件缓存2小时
ExpiresByType application/x-javascript "now plus 2 hours" #脚本类文件缓存2小时
ExpiresByType application/javascript "now plus 2 hours" #脚本类文件缓存2小时
ExpiresByType application/x-shockwave-flash "now plus 2 hours" #flash脚本类文件缓存2小时
ExpiresDefault "now plus 0 min" #其他的不缓存
</IfModule>
九、禁止解析PHP
1.修改主配置文件,配置禁止解析php:
# vim /usr/local/apache2/etc/httpd.conf
<Directory /usr/local/apache2/htdocs/data> #声明某一目录,例如data目录的权限
php_admin_flag engine off #关闭PHP解析功能
<filesmatch "(.*)php"> #只要是带php的文件都执行以下动作
Order deny,allow #拒绝所有
Deny from all #不论客户端来自于哪个IP,都不允许访问
</filesmatch>
</Directory>
本文详细介绍了Apache服务的各种功能实现,包括目录别名设置以访问网页、用户认证保护后台、虚拟主机配置、域名跳转、HTTPS配置、日志切割、忽略特定文件类型日志、静态缓存设置以及禁止PHP解析等关键操作。

488

被折叠的 条评论
为什么被折叠?



