频道栏目
首页 > 资讯 > 其他 > 正文

Apache2.4的常用配置分享

18-07-18        来源:[db:作者]  
收藏   我要投稿

Apache2.4配置

一、开机自启动

思考:能不能让源码包安装的apache像二进制包安装的apache一样方便的管理

[root@localhost ~]# cp `which apachectl` /etc/init.d/httpd

[root@localhost ~]# vim /etc/init.d/httpd 在#!/bin/bash下加入:(前面需要'#')

# chkconfig: 2345 85 15

# description: httpd2.4...

[root@localhost ~]# chkconfig --add /etc/init.d/httpd

[root@localhost ~]# chkconfig --list httpd

[root@localhost ~]# vim /usr/local/apach2/etc/httpd.conf

注释以下两行

ErrorLog logs/error_log

CustomLog logs/access_log common

重写为

ErrorLog "|bin/rotatelogs logs/errorlog.%Y-%m-%d-%H_%M_%S 86400 480"

CustomLog "|bin/rotatelogs logs/accesslog.%Y-%m-%d-%H_%M_%S 86400 480" common

86400为切割单位秒,480是中国与美国的时差,根据地区可自行调节。

也可以根据大小切割如

CustomLog "|bin/rotatelogs logs/accesslog.%Y-%m-%d-%H_%M_%S 5M" common

可识别的单位 K M G

vim /etc/logrotate.conf

新增

/usr/local/apache2/logs/access_log {

daily

create

rotate 30

dateext

}

强制刷新截取日志

logrotate -f /etc/logrotate.conf

Error_log也要进行轮替

语法:ServerRoot /path/to/directory

例如:ServerRoot "/usr/local/apache2"

语法:PidFile /path/to/apache2/pid

例如:Pidfile "/usr/local/apache2/logs/httpd.pid"

语法:Listen [IpAddress:]port

例如:Listen 80

多端口:Listen 80 90

语法:LoadModule some_module /path/to/module

例如:LoadModule mpm_prefork_module modules/mod_mpm_prefork.so

语法:User user_name

例如:User daemon

apache 默认是以daemon用户的身份执行的

语法:Group group_name

例如:Group daemon

语法:ServerAdmin email_address

例如:ServerAdmin 888@qq.com

语法:ServerName 主机名[:port]

例如:ServerName www.example.com

语法:DowumentRoot /path/to/someFile

例如:DocumentRoot "/data/a"

Options:

Indexes:缺少指定的默认页面时,允许将目录中的所有文件以列表形式返回给用户;

FollowSymLinks:是否将符号连接所指向的文件打开;

None:所有选项都不启用

All:所有选项都启用

AllowOverride

All:寻找.htaccess文件

No:不寻找

访问控制:后面详述

注:MultiViews:协商可以这样理解,假如网页有中文的,英文的,阿拉伯文的,而用户需要中文的,则客户端和服务端进行协商,最后把中文的网页发送给用户,这就是协商;

语法:CustomLog "/path/to/access_log_file" Format_Name

例如:CustomLog "/data/a/access/www.a.com-access.log" combined

可选格式 common combined

语法:ErrorLog "/path/to/error_log"

例如:ErrorLog "/data/a/error/www.a.com-error.log"

语法:Aliase /alias/ "/path/to/somewhere/"

这意味着访问http://Server_IP/alias时,其页面文件来自于/path/to/somewhere/这个位置

例如:Aliase /images/ "/data/a/imgs/"

注释:访问:http://192.168.136.128/images/1.gif

就相当于去访问192.168.136.128这台主机的/www/htdocs/images/1.gif

Require all allow

Require all denied

Require ip 192.168.1 192.168.2

Require not ip 192.168.1 192.168.2

Require ip 192.168.1/24

五、虚拟主机

思考:租一整台服务器租不起,一台能跑多个网站么

有基于:域名、IP、端口三种划分方式

第一步:编辑httpd.conf将vhost的注释去掉(去掉'#')

# Include conf/extra/httpd-vhosts.conf

第二步:开始配置虚拟主机

[root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

# 基于域名的

DocumentRoot "/data/a" # 指定你的web根目录

ServerName www.a.com # 配置多个的时候改这里即可

# 基于IP的

DocumentRoot "/data/a"

ServerName www.b.com

# 基于PORT的,只是这个还必须编辑httpd.conf 追加端口:Listen 8080

DocumentRoot "/data/b"

ServerName www.a.com

思考:哪种最常用

六、域名跳转

如果网站域名更换但保留用户访问方式可使用域名跳转

[root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

...

ServerName www.newa.com # 新域名

ServerAlias www.a.com # 别名(老域名)

...

<\VirtualHost>

升级一下

Redirect permanent / http://www.newa.com/ # 301重定向

后面继续判断,比如其他人用www.b.com域名绑定你的IP,加上一下判断,无法从他的域名访问到 403

Require all denied

七、伪静态

思考:为什么新闻页面的链接都怪兮兮的,我们项目的URL可不是这样!

动态网站不适合大面积静态化,但访问方式有需要伪装,于是就产生了伪静态技术或者路由技术。伪静态只是使用rewrite模块改变了URL,实际上还是动态页面;

缺点:比纯动态URL解析更耗资源。

第一步:编辑httpd.conf将rewrite模块的注释去掉(去掉'#')

#LoadModule rewrite_module modules/mod_rewrite.so

第二步:修改AllowOverride 为 All

Options Indexes FollowSymLinks

AllowOverride All

Require all granted

第三步:添加规则文件.htaccess到访问目录中

[root@localhost ~]# vim /data/a/.htaccess

RewriteEngine on

RewriteRule news_(\d+).html index.phpid=$1

实现效果:输入news_(数值).html时,跳转到index.php文件,同时把数值当成变量传入index.php

编辑httpd.conf将autoindex子文件的注释去掉(去掉'#')

#Include etc//extra/httpd-autoindex.conf

默认的目录浏览功能比较简单,开启后会为文件添加图标也可以修饰文件类型。

# 首先要开启mod_expires模块(取消前面的注释'#')

[root@localhost ~]# vim /usr/local/apache2/conf/httpd.conf

# LoadModule expires_module modules/mod_expires.so

# 开始配置静态缓存

[root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

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"

# 打开浏览器,查看结果是否正确(304表示缓存了),缓存时间是否与配置的一致

# 开始配置

[root@localhost ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

在网站目录中添加

SetEnvIfNoCase Referer "^http://www.a.com" local_ref

SetEnvIfNoCase Referer "^http://a.com" local_ref

Require all denied

Require env local_ref

最后 HTTP/1.1 状态码

--来自HTTP/1.1RFC文档

-1xx 报告的 - 接收到请求,继续进程.

-2xx 成功 - 步骤成功接收,被理解,并被接受

-3xx 重发 - 为了完成请求,必须采取进一步措施.

-4xx 客户端出错 - 请求包括错的顺序或不能完成.

-5xx 服务器出错 - 服务器无法完成显然有效的请求.

相关TAG标签
上一篇:怎么做长尾关键词排名?如何通过长尾词获得客户?
下一篇:tomcat重启可复制脚本代码实例
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站