apache虚拟主机配置及解析

时间:2023-03-08 17:56:42

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 根据目录或者扩展名,请求后面的对应服务器

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