设为首页 收藏本站
查看: 966|回复: 0

[经验分享] apache配置文件详解

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-5-28 08:47:38 | 显示全部楼层 |阅读模式
apache配置文件分为三部分,分别是全局配置,中心主机配置和虚拟主机配置。

1.全局配置
ServerTokens OS 是否显示操作系统的信息
  配置格式有如下几种方式:
wKioL1OEU0aRxF_cAAGP4a_Mspo564.jpg
ServerRoot 服务器起点的安装目录
PidFile PID的文件,这是相对路径,并链接到/var/run目录
Timeout 120 TCP的超时时间,发送的数据包如果没有响应,到了设置时间后就自动断开 TCP的机制
KeepAlive 保持连接
MaxKeepAliveRequests 100 最多请求的数据包数
KeepAliveTimeout 15保持的超时时间
下面是设置Apache的两种工作模式,分别是prefork和worker。我们先来了解一下这两种工作模式。
prefork采用预派生子进程方式,用单独的子进程来处理 不同的请求,进程之间彼此独立。它适合于没有线程安全    库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的MPM,这样若一个请求出现问题就不会影响到其他请求。
worker全新的支持多线程和多进程混合模型的MPM。由于 使用线程来处理,所以可以处理相对海量的请求,而系统资源的开销要小于基于进程的服务器。但是,worker也使用了多进程,每个进程又生成多个线程,以获得基于进程服务器的稳定性。
<IfModule prefork.c>
StartServers       8              启动服务的时候启动几个空闲进程等待用户访问
MinSpareServers    5          最少空闲进程
MaxSpareServers   20        最大空闲进程
ServerLimit      256           定义客户端数的超出上限
MaxClients       256           最大客户端(进程)数(一个客户端可发多个请求)
MaxRequestsPerChild  4000     定义一个进程最多可以响应多少个请求
</IfModule>  
<IfModule worker.c>
StartServers         2       启动服务的时候启动几个空闲进程等待用户访问
MaxClients         150       最大客户端数
MinSpareThreads     25       最少空闲线程
MaxSpareThreads     75       最大空闲线程
ThreadsPerChild     25       每个进程最多可以生产的线程数量
MaxRequestsPerChild  0       每个子进程可以响应多少个请求 0表示不作限制
</IfModule>

Listen 80 监听的端口,nginx可以监听多个端口,也可以监听某个特定IP的端口。
(Listen 8080)
(Listent 192.168.1.2:80)
[注]设置端口后要重启httpd服务才生效。

LoadModule                  指明加载某些模块
Include conf.d/*.conf   被识别为配置文件的一部分
ExtendedStatus On        当使用stubstatus查看时显示更为完整的状态信息
User apache
Group apache               指定运行这个服务的用户和组
  
2.中心主机配置
ServerAdmin root@localhost 服务器不响应或者报错时候显示的管理员的邮箱地址
ServerName www.example.com:80 自动探测本机的正向和反向地址
UseCanonicalName Off 是否使用正式名称
DocumentRoot "/var/www/html" 指定网页文件的存放位置
[注]中心主机和虚拟主机不能同时使用,当使用虚拟主机时,要把中心主机的DocumentRoot注释掉。

<Directory /> 定义一个目录的访问属性
   Options FollowSymLinks
   AllowOverride None
</Directory>
options参数:
Indexes:允许索引访问网站没有主页面的时候直接列出网站目录下的所有内容                FollowSymLinks:跟踪链接允许访问符号链接所指向的实际文件
Includes:允许执行服务器包含的这样方式的调用
SymLinksifOwnerMatch:允许使用符号链接,如果属主匹配的话,先做用户匹配
ExecCGI:允许执行CGI
MultiViews:多用户的试图服务器和客户端的内容协商



Order allow,deny 访问目录的访问控制列表
Allow from all
在这里,oreder表示顺序,后者是默认规则,这是基于客户端来源的ACL。
例:允许192.168网段的IP地址进行访问,但不允许192.168.0.1的IP进行访问。
Order allow,deny
Deny from 192.168.0.1
Allow from 192.168.0.0/24


AllowOverride 是否允许覆盖当用户访问这个目录中的文件的访问控制列表,后面的是默认规则
规则:None 全部不允许
      All  全部可以覆盖
      FileInfo
            AuthConfig 以指定的认证方式为准
            Limit
例:只能允许有权限的用户进行访问。我们先创建一个文件.htpasswd,该文件中写着用户名和密码。
创建.htpasswd文件命令
htpasswd -c 只在第一次用,创建密码文件的指令(如果文件创建以后还使用-c参数,原文件将被覆盖)
        -m 密码用md5加密后使用
        -D 删除用户
我们先在该文件中添加gentoo用户,再添加centos用户。
htpasswd -cm  /etc/httpd/conf/.htpasswd gentoo(输入命令后会提示输入密码)
htpasswd-m  /etc/httpd/conf/.htpasswd centos
创建好密码文件后,我们来设置AllowOverride
AllowOverride AuthConfig认证配置
AuthName "private" 认证名称(名称可以随便填写)
AuthType Basic    认证类型
AuthUserFile /etc/httpd/conf/.htpasswd 虚拟账号,访问apache才用到的,这是用户的认证文件
AuthgroupFile /etc/httpd/conf/.htgroup 组的账号文件
Require user gentoo 只允许gentoo用户访问
Require valid-user 允许所有密码文件中的用户访问
#Require group developers 只允许这个组的用户登录
[注]这是还可以设置某个组中的用户进行访问,但需要注意的是,在设置组时,需要同时创建htpasswd和htgroup。htgroup文件中包含组中的用户,htpasswd文件中包含组中那些用户的用户名和密码。
htgroup文件的创建及其格式
vim /etc/httpd/conf/.htgroup
development: gentoo ubuntu
格式为:组名:用户 用户 ...


<IfModule mod_userdir.c>操作系统用户拥有自己的网站
Jerry: http://172.16.25.1/~jerry
</IfModule>
在家目录下创建publick_html目录,在此目录下创建网页文件。
这样不用操作系统用户可以访问不同的页面。
使用这项功能时,需注释掉UserDir disable,启用UserDir public_html。
同时要让Apache对该用户的家目录有执行权限,例chown o+x /home/jerry

DirectoryIndex index.html index.html.var 网站的默认主页



AccessFileName .htaccess 为每一个目录创建访问控制权限

控制哪个文件,就在该文件所在的那个目录下建立.htaccess文件,实现对特定目录的访问控制
<Direcotry "/www/html/bbs">定义在主配置文件中
       optionsnone
       Allowoverrideauthconfig
       AuthName
       AuthType
       AuthUserFile
       Requireuser
</Directory>

TypesConfig /etc/mime.types 定义当前系统所支持的mime的类型


DefaultType text/plain 默认的类型

<IfModule mod_mime_magic.c> 判断某个模块是否存在
#  MIMEMagicFile /usr/share/magic.mime
   MIMEMagicFile conf/magic
</IfModule>

HostnameLookups Off 是否对某个主机的主机名做析 一般不用

EnableMMAP off
EnableSendfileoff
ErrorLog logs/error_log 错误日志相对于serverroot而言



LogLevel warn 错误日志的日志级别
级别:
Debug 调试级别日志信息详细
Info
Notice 引起注意
warn   警告
Crit   蓝色预警
Alert  黄色预警
Emerg  红色警戒



日志格式:
LogFormat "%h %l %u %t\"%r\" %>s %b \"%{Referer}i\"\"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t\"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U"referer
LogFormat "%{User-agent}i" agent
%h 远端主机的IP地址  %l 远程用户的登录名称 %u用户名 %t访问时间 %r 请求数据包首部的第一行%>s  状态码 %b 响应信息的大小(字节)\"%{Referer}i\" 引用从哪跳转至当面页面 \"%{User-Agent}i\用户代理(浏览器,从哪发起的浏览请求,搜索引擎的网络爬虫)

CustomLog logs/access_log combined 访问日志


ServerSignature On 服务器签署,页面的底部信息



Alias /icons/"/var/www/icons/"  路径别名,实现不在网页指定路径下的页面的访问
ScriptAlias /cgi-bin/"/var/www/cgi-bin/" 哪个路径下可放置CGI脚本

IndexOptions FancyIndexing VersionSort NameWidth=*HTMLTable 索引的选项



AddIconByType添加图标


AddDefaultCharset UTF-8默认使用的字符集

AddType application/x-compress .Z 添加额外的mime类型
AddType application/x-gzip .gz .tgz
BrowserMatch 匹配浏览器类型
DirectoryIndex index.html index.html.var指定主页

3.虚拟主机
一个物理主机可以运行N个站点,将其实现需设置虚拟主机。值得注意的是,虚拟主机和中心主机不能同时使用。
虚拟主机可通过IP,Port和FQDN进行设置。

IP
<VirtualHost 172.16.100.1:80>
   ServerName www.magedu.com
DocumentRoot "/vhosts/magedu.com" 网页路径
</VirtualHost>
<VirtualHost 172.16.100.2:80>
   ServerName www.linux.org
DocumentRoot "/vhosts/linux.org"
</VirtualHost>

Port
<VirtualHost 172.16.100.1:80>
   ServerName www.magedu.com
DocumentRoot "/vhosts/magedu.com" 网页路径
</VirtualHost>
<VirtualHost 172.16.100.1:8080>
   ServerName www.linux.org
DocumentRoot "/vhosts/linux.org"
</VirtualHost>

FQDN
NameVirtualHost 172.168.100.1:80
<VirtualHost 172.16.100.1:80>
   ServerName www.magedu.com
DocumentRoot "/vhosts/magedu.com" 网页路径
</VirtualHost>
<VirtualHost 172.16.100.1:80>
   ServerName www.linux.org
DocumentRoot "/vhosts/linux.org"
</VirtualHost>



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-19776-1-1.html 上篇帖子: Apache安装80端口被占用解决方案 下篇帖子: 【Apache Shiro】Session Management 配置文件
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表