Apache虚拟主机配置及解析

1.修改httpd-vhosts.conf

打开apache(Apache24)/conf/extra/httpd-vhosts.conf文件,添加虚拟主机信息,可以这只不同的域名指向不同的文件目录

<VirtualHost *:>
ServerAdmin amyliyanice@.com # 服务管理员邮箱地址,出问题时发送邮件到这个邮箱
DocumentRoot "D:/AppServ/www/wx" # apache默认的站点目录,路径结尾不要添加斜线
ServerName www.test.com # 网站域名
ServerAlias www.wx.dev # 网站别名(可不填)
ErrorLog "logs/wx.dev.log" # 错误日志
CustomLog "logs/wx.dev.log" common # 自定义日志
</VirtualHost>

<Directory /> 根目录(以下是对根目录的限制)
Options FollowSymLinks FollowSymLinks表示允许符号链接,没加选项表示禁止,如不允许目录浏览等
AllowOverride None 表示禁止用户对目录配置文件(.htaccess进行修改)重载,普通站点目录此项建议不开启
Order deny,allow 允许未被明确拒绝的 (从后往前读)
Deny from all 拒绝所有访问
</Directory>

<Directory "/applications/apache2.2.31/htdocs"> 站点目录(以下为默认站点目录的限制,如果读者私自配置了站点目录而没有配置这里就会出现 403错误)
Options Indexes FollowSymLinks FollowSymLinks表示允许符号链接,indexes表示允许目录浏览,如允许目录浏览,允许符号链接这里很危险,应禁止目录浏览

应更改为 Options FollowSymLinks或Options -Indexes FollowSymLinks
AllowOverride None 表示禁止用户对目录配置文件(.htaccess进行修改)重载 尽量不开启.htaccess 安全隐患大,规则多了网站访问性能低
Order allow,deny 拒绝未被明确允许的 (从后往前读)
Allow from all 所有人都能访问
</Directory>

<IfModule dir_module>
DirectoryIndex index.html 索引文件 首页文件(首页文件可以有多个,可以用空格匹配多个,)
</IfModule>

<FilesMatch "^\.ht"> 阻止.htaccess 和 .htpasswd等重要文件被web用户查看
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>

# Some examples: 出现不同的错误跳转的指定页面
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html


apache 扩展配置文件(Include 调用文件)在 /appacation/apache/conf/extra 下,不开启就是默认配置。
extra/
├── httpd-autoindex.conf
├── httpd-dav.conf dav支持配置
├── httpd-default.conf 配置的是apache的相关服务参数,如超时时间,保持连接时间等
├── httpd-info.conf
├── httpd-languages.conf 语言支持模式
├── httpd-manual.conf
├── httpd-mpm.conf 服务器池管理,也就是优化apache的一个配置文件,选择apache的模式以及配置连接数等,常用的模式有worker模式和profork模式,默 认情况是profork模式
├── httpd-multilang-errordoc.conf
├── httpd-ssl.conf 支持ssl加密的文件
├── httpd-userdir.conf
└── httpd-vhosts.conf 虚拟主机的配置文件

虚拟主机配置文件 (httpd-vhosts.conf)
egrep -v "^.*#|^$" httpd-vhosts.conf
NameVirtualHost *:80 表示基于名称的虚拟主机配置,*表示监听本机的所有IP地址,可以更改为具体的IP地址

<VirtualHost *:80>  定义一个虚拟主机,*表示监听本机的所有IP地址,可以更改为具体的IP地址
ServerAdmin webmaster@dummy-host.example.com 配置管理员的邮箱
DocumentRoot "/applications/apache2.2.31/docs/dummy-host.example.com" 提供服务的程序目录,也成站点目录,如果不配置,则去主配置文件中寻找
ServerName dummy-host.example.com 提供服务的域名,测试需要在本机做hosts解析
ServerAlias www.dummy-host.example.com 虚拟主机的别名,也就是配置多个域名访问同一个站点,此功能需要apache mod_alias模块的支持
ErrorLog "logs/dummy-host.example.com-error_log" 配置错误日志的路径
CustomLog "logs/dummy-host.example.com-access_log" common 配置访问日志,一般用combined格式代替common格式,以获得更多的格式输出
</VirtualHost> 虚拟主机的结尾

2.设置hosts(不可缺少的一步)

打开C:\Windows\System32\drivers\etc\hosts文件添加域名解析

127.0.0.1 localhost
127.0.0.2 www.test.com 
127.0.0.3 www.nyy.dev

通过以上步骤,重启apache就可以在本地通过不同的域名访问不同的站点文件。

*apache错误:.htaccess: Invalid command ‘RewriteEngine’, perhaps misspelled or defined by a module not included in the server configuration.
错误解决方法 在apache的配置文件httpd.conf中将#LoadModule rewrite_module modules/mod_rewrite.so前的#去掉,再重启服务器*

######################################################################################################
apache优化
一、日志轮询
1.使用cronolog进行日志轮询.之所以不使用系统自带的rotatelogs,是因为切割日志时丢失日志。
2.使用复合日志(combined),显示会多一些。
3.配置cronolog日志轮询时,要写全路径,如 Customlog“|/usr/local/sbin/cronolog /application/apache/logs/access_www_%Y%m%d.log” combined

二。错误页面优雅显示
支持url、文件和脚本的形式。 配置方法 在主配置文件 写入 ErrorDocument 404 /http://www/51cto.com 或者 ErrorDocument 404 /missing.html

三、mod_deflate 文件压缩功能(压缩发送给客户端的内容)
以DSO方式安装 /application/apache/bin/apxs -i -c -a mod_deflate.c
把文件先在服务器端进行压缩,然后再传输,在客户端再进行解压。没特殊情况,所有文本内容都应该是gzip压缩。
把以下内容放在虚拟主机当中,就实现的压缩功能:
<ifmodule mod_defalte.c>
DeflateCompressionlevel 9 #压缩等级,等级也大,压缩比例越高,相反耗CPU也高
SetOutputFilter DEFLATE #启用压缩
#DeflateFilterNote Input instream #在日志中放置压缩率标记
#DeflateFilterNore Output outstream #在日志中放置压缩率标记
AddOutputFilterByType DEFLATE text/html text/plain text/xml #以下三行设置压缩的类型
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE text/css
#DeflateFilterNote Ratio ratio #在日志中放置压缩率标记,下面是记录日志的,这个功能一般不用,所以注释掉了
#LogFormat '"%r" %{outsream}n/%{instream}n (%{ratio}n%%)' deflate
#Customlog logs/deflate_log.log deflate
</ifmodule>
使用curl命令,头部信息会出现一行Vary: Accept-Encoding 表示已经压缩

四、mod_expires 缓存功能
通过设置expires header 来缓存如:图片,脚本,css,flash等,expires其实就是通过header报文来指定特定类型的文件在浏览器中的缓存时间,大多数的图片,flash在发布后都是不需要经常修改的,做了缓存以后这样浏览器就不会再从服务器下载这些文件而是直接从缓存中读取
优点:
1,加大访问页面的速度 2,提升用户体验 3,节约网站带宽成本 4,节约网站服务器及维护成本

<ifmodule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 12 month"
ExpiresByType test/html "access plus 12 months"
ExpiresByType test/scc "access plus 12 months"
ExpiresByType image/gif "access plus 12 months"
ExpiresByType image/jpeg "access plus12 12 months"
ExpiresByType image/jpg "access plus 12 months"
ExpiresByType image/png "access plus 12 months"
EXpiresByType application/x-shockwave-flash "access plus 12 months"
EXpiresByType application/x-javascript "access plus 12 months"
ExpiresByType video/x-flv "access plus 12 months"
</ifmodule>

expires失效条件:用户主动删除和内容缓存期已到

如果网站更新功能或者更新文件,用户访问时的内容还是旧的
1.一般将经常变化的设置时间短 如1-30天
2.在更新文件上采取策略,如更新后使用新的文件名发布,这样对用户又是新的资源了

五、更改apache的默认用户
编译安装apache的用户是daemon
yum安装apache的用户的apache
尽可能的将用户改名,最好用大家都不知道用户名

六、worker模式 提升并发数(可以达到4500,网友测试结果)
编译安装时,使用worker模式

七、屏蔽apache版本等敏感信息
客户访问时不知道用的是什么版本的服务器,减少攻击
修改httpd-default.conf文件,ServerSignature off 和ServerTokens Prod
之后 apachectl graceful 使之生效
但还是会出现server=Apache 字样,如果想全部屏蔽,则需要从新编译

八、apache目录文件权限的设置 (属组root ,目录755,文件644)
在网站架构中,应该把资源文件,包括用户上传的图片,附件等和程序分离,最好把上传的程序也分离,这样就可以从容的授权了。
一般的公司授权:
chmod -R 777 /sitedir
chown -R apache.apache /sitedir 都不安全

九、修改apache的并发量等设置(默认apahce的并发量是150)
修改httpd.conf 打开Include conf/extra/httpd-mpm.conf 模块

Apachef服务为worker模式的配置 vim /conf/extra/httpd-mpm.conf
<IfModule mpm_worker_module>
StartServers 5
MaxClients 2000
ServerLimit 25
MinSpareThreads 50
MaxSpareThreads 200
ThreadLimit 200
ThreadsPerChild 100
MaxRequestsPerchild 0
</IfModule>
注:
MaxClients <= ServerLimit * ThreadsPerChild

Apache服务为prefork模式的配置
生产环境配置文件 httpd-default.conf并发连接数配置

vim conf/extra/httpd-mpm.conf
StartServers 10
MinSpareServers 10
maxSpareServers 15
ServerLimit 2000
MaxClients 2000
MaxRequestsPerChild 10000

修改完并发数后,要stop apache 再start apache ,restart和graceful是不管用的 可能是bug

十、apache的防盗链功能
自己所有的图片,不允许嵌套在别人的网页里面

十一、禁止目录Indexes
删除Indexes 或者Indexes前加-

十二、禁止用户重载
AllowOverride Nore

十三、关闭CGI
删除或者关闭CGI

十四、避免使用.htaccess文件
首先是性能的考虑,如果AllowOverride启用了.htaccess文件,则Apache需要在每个目录中查找.htaccess文件,另外,对每一个请求,都需要读取一次.htaccess文件因此会导致性能的下降。
其次是安全,这样会允许用户自己修改服务器的配置,这可能导致某些意想不到的修改,所以请认真考虑是否应当给予用户这样的特权

AccessFileName .htaccess
建议设置成:
#AccessFileName .htaccess
全部目录权限定义使用httpd.conf中的定义,不使用.htaccess.

十七、apache日志授予root 700权限

十八、内核优化 系统优化

十九、apache程序架构优化
1.程序页面服务器和 图片附件服务器、上传服务器 三者的功能尽量分离
2.分离最佳的方式是分别使用独立的服务器(需要程序的支持)
3.次选方案是在前端负载均衡器通过haproxy/nginx 根据目录或者扩展名,请求后面的对应服务器

————————————————
版权声明:本文为CSDN博主「zypzilong」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zypzilong/article/details/77765429

apache虚拟主机配置及解析的更多相关文章

  1. Apache虚拟主机配置

    在一个Apache服务器上可以配置多个虚拟主机,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录.Apache虚拟主机配置有3中方法:基于IP配置.基于域名配置和基于端口配置,这里介 ...

  2. Apache虚拟主机配置(多个域名访问多个目录)

    Apache虚拟主机配置(多个域名访问多个目录) 为了方便管理虚拟主机,我决定使用一种方法,那就是修改httpd-vhosts.conf文件. 第一步首先要使扩展文件httpd-vhosts.conf ...

  3. Linux Apache虚拟主机配置方法

    apache 虚拟主机配置 注意: 虚拟主机可以开很多个 虚拟主机配置之后,原来的默认/etc/httpd/httpd.conf中的默认网站就不会生效了 练习: 主机server0 ip:172.25 ...

  4. Apache虚拟主机配置(多个域名访问多个目录)(转)

    Apache虚拟主机配置(多个域名访问多个目录) 为了方便管理虚拟主机,我决定使用一种方法,那就是修改httpd-vhosts.conf文件. 第一步首先要使扩展文件httpd-vhosts.conf ...

  5. Linux下Apache虚拟主机配置

    Linux下Apache虚拟主机的三种配置.这样可以实现一台主机架构多个独立域名网站.其中基于域名的最为常见.性价比也最高.下面PHP程序员雷雪松详细的讲解下Linux下Apache虚拟主机配置的具体 ...

  6. phpStudy 2014的Apache虚拟主机配置

    安装phpStudy直接百度下载,傻瓜式安装很简单,一直点击下一步即可,中途根据个人爱好设置WWW目录,我的设置在D盘根目录里. 打开虚拟主机配置,打开D:\phpStudy\Apache\conf下 ...

  7. linux apache虚拟主机配置(基于ip,端口,域名)

    配置环境: linux版本:Centos6.4 httpd版本: [root@centos64Study init.d]# pwd/etc/init.d[root@centos64Study init ...

  8. Ubuntu16.04+Apache虚拟主机配置详解

    在window下,Apache的配置文件是httpd.conf,但在Linux下安装了Apache后发现其配置并不像window下那么简单,Linux下Apache将各个设置项分在了不同的配置文件中, ...

  9. windows环境下,apache虚拟主机配置

    在windows环境下,apache从配置文件的相关配置: Windows 是市场占有率最高的 PC 操作系统, 也是很多人的开发环境. 其 VirtualHost 配置方法与 Linux 上有些差异 ...

随机推荐

  1. 解决myeclipse validation验证javascript导致速度变慢的现象

    参考:https://jingyan.baidu.com/article/ca41422fe094251eae99ede7.html

  2. Linux崩溃时启动脚本获取进程相关信息

    编写test.cpp #include <stdlib.h> #include <stdio.h> #include <exception> #include &l ...

  3. C++怎样通过嵌入汇编写一个函数

    参考:http://msdn.microsoft.com/en-us/library/h5w10wxs.aspx 普通的函数,Compiler会自动生成prologue和epilogue,但是通过在函 ...

  4. selenium,webdriver模仿浏览器访问百度 基础2

    学python理念  :  代码要多敲 一定要多敲 哪怕很基础  注释要清晰 由于基础1有一些注释写的很详细, 在这里有些注释没有写的很详细 可以配合基础1一起学习哦 from selenium im ...

  5. Cocos2d-x之MessageBox

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 在cocos2d-x中使用的对话框为MessageBox,因为cocos2d-x已经包装好了:但是在一般的游戏设置中,我们不会使用coco ...

  6. 添加阿里巴巴图标,让你页面小图标都是CSS3写成

    第一步把你想要的小图标添加到购物车里,然后如图下载 第二步下载完了,如下图有这些文件 第三步,把你需要的必要文件放到文件夹中,然后把需要的代码放到一个CSS中,然后引用 备注,这几个文件就是字体,必须 ...

  7. 计算两个日期之间相差的天数(带带负数) 支持格式YYYY-mm-dd和YYYY-mm-dd HH:mm:ss

    /** * 计算两个日期之间相差的天数(带带负数) 支持格式YYYY-mm-dd比较 * @param higDate 减数 * @param lowDate 被减数 * @returns 差值天数 ...

  8. redis缓存架构-02-两种持久化机制(RDB和AOF)

    1.两种持久化机制的介绍 1.1 RDB 周期性的生成redis内存数据的一份完整的快照 1)根据配置的检查点,生产rdb快照文件,fork一个子线程,将数据dump到rdb快照文件中,完成rdb文件 ...

  9. springCloud的使用07-----消息总线(spring cloud bus)

    spring cloud bus 将分布式的节点用轻量的消息代理连接起来.可用于广播配置文件的更改或服务之间的通讯,也可以用于监控. spring cloud bus 默认只支持rabbitmq和ka ...

  10. kubernetes容器集群自签TLS证书

    集群部署 1.环境规划 2.安装docker 3.自签TLS证书 4.部署Flannel网络 5.部署Etcd集群 6.创建Node节点kubeconfig文件 7.获取K8S二进制包 8.运行Mas ...