Apache虚拟主机配置及解析javascript
打开apache(Apache24)/conf/extra/httpd-vhosts.conf文件,添加虚拟主机信息,能够这只不一样的域名指向不一样的文件目录css
<VirtualHost *:80> ServerAdmin amyliyanice@163.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>html
<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>java
<IfModule dir_module>
DirectoryIndex index.html 索引文件 首页文件(首页文件能够有多个,能够用空格匹配多个,)
</IfModule>nginx
<FilesMatch "^\.ht"> 阻止.htaccess 和 .htpasswd等重要文件被web用户查看
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
web
# 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.htmlapache
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 虚拟主机的配置文件vim
虚拟主机配置文件 (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> 虚拟主机的结尾
打开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、日志轮询
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
3、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 表示已经压缩
4、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.在更新文件上采起策略,如更新后使用新的文件名发布,这样对用户又是新的资源了
5、更改apache的默认用户
编译安装apache的用户是daemon
yum安装apache的用户的apache
尽量的将用户更名,最好用你们都不知道用户名
6、worker模式 提高并发数(能够达到4500,网友测试结果)
编译安装时,使用worker模式
7、屏蔽apache版本等敏感信息
客户访问时不知道用的是什么版本的服务器,减小攻击
修改httpd-default.conf文件,ServerSignature off 和ServerTokens Prod
以后 apachectl graceful 使之生效
但仍是会出现server=Apache 字样,若是想所有屏蔽,则须要重新编译
8、apache目录文件权限的设置 (属组root ,目录755,文件644)
在网站架构中,应该把资源文件,包括用户上传的图片,附件等和程序分离,最好把上传的程序也分离,这样就能够从容的受权了。
通常的公司受权:
chmod -R 777 /sitedir
chown -R apache.apache /sitedir 都不安全
9、修改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
10、apache的防盗链功能
本身全部的图片,不容许嵌套在别人的网页里面
11、禁止目录Indexes
删除Indexes 或者Indexes前加-
12、禁止用户重载
AllowOverride Nore
十3、关闭CGI
删除或者关闭CGI
十4、避免使用.htaccess文件
首先是性能的考虑,若是AllowOverride启用了.htaccess文件,则Apache须要在每一个目录中查找.htaccess文件,另外,对每个请求,都须要读取一次.htaccess文件所以会致使性能的降低。
其次是安全,这样会容许用户本身修改服务器的配置,这可能致使某些意想不到的修改,因此请认真考虑是否应当给予用户这样的特权
AccessFileName .htaccess
建议设置成:
#AccessFileName .htaccess
所有目录权限定义使用httpd.conf中的定义,不使用.htaccess.
十7、apache日志授予root 700权限
十8、内核优化 系统优化
十9、apache程序架构优化
1.程序页面服务器和 图片附件服务器、上传服务器 三者的功能尽可能分离
2.分离最佳的方式是分别使用独立的服务器(须要程序的支持)
3.次选方案是在前端负载均衡器经过haproxy/nginx 根据目录或者扩展名,请求后面的对应服务器
———————————————— 版权声明:本文为CSDN博主「zypzilong」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处连接及本声明。原文连接:https://blog.csdn.net/zypzilong/article/details/77765429