一、绑定不同域名到不同项目目录

可httpd.conf文件末尾添加(不建议)

正规做法应在配置目录建立vhosts文件夹,每一个项目对应一个conf配置文件

#本地访问
#IP访问,主要用于开发环境手机连接WIFI访问电脑的
#服务器上一般不要允许IP访问
#ip.conf
<VirtualHost *:80>
DocumentRoot "D:\wamp\www"
ServerName localhost
ServerAlias 127.0.0.1 192.168.1.129
</VirtualHost> #batsing.com.conf
<VirtualHost *:80>
DocumentRoot "D:\wamp\www\batsing"
ServerName www.batsing.com
ServerAlias batsing.cn batsing.com.cn
</VirtualHost> #getchar.cn.conf
<VirtualHost *:80>
DocumentRoot "D:\wamp\www\getchar"
ServerName www.getchar.cn
</VirtualHost>

二、Apache 外部访问(如WIFI),出现403错误,wamp刚装好时常见

打开httpd.conf文件,找到

Require local

改成

#   Require local
Require all granted

即是注释掉允许本机访问,改成允许外部访问,然后重启Apache

三、使Apache支持 .htaccess URL重写

打开httpd.conf文件

查找

#LoadModule rewrite_module modules/mod_rewrite.so

把#去掉;
查找

# AllowOverride controls what directives may be placed in .htaccess files.

把它下面的 AllowOverride None改成 AllowOverride all

还需要在其vhost配置里加上类似下面的代码

<VirtualHost *:80>
  DocumentRoot "/home/mywebsite"
  ServerName www.batsing.com
  <Directory "/home/mywebsite" >
    AllowOverride All
  </Directory>

</VirtualHost>

注意上面的Directory中的路径不能用~代替,否则.htaccess将会无效;

重启Apache,即可支持URL重写

五、禁止所有项目中的 .svn .git等目录和 .ht .project 等文件的访问

在vhosts文件夹中新建 common.conf

#所有项目 .svn .git .ht* 等拒绝访问
<Directory ~ "/\.">
Deny from all
</Directory>

六、服务器上禁止IP(和其它非法域名)访问

在httpd.conf最末尾加入以下内容,注意一定要放在vhost配置之后,否则会全站80端口都拒绝访问

#禁止IP和所有非法域名直接访问
<VirtualHost *:80>
ServerAlias *
<Location />
Order Allow,Deny
Deny from all
</Location>
</VirtualHost>

七、屏蔽上传目录的脚本执行权限,以防文件上传漏洞

方案一:项目host.conf添加

#    禁用某些目录的PHP执行权限
<Directory ~ "/Upload">
<FilesMatch "(?i:\.php)$">
Order allow,deny
Deny from all
</FilesMatch>
</Directory>

方案二:在对应目录放置.htaccess文件

<FilesMatch "(?i:\.php)$">
Deny from all
</FilesMatch>

所使用的是正则匹配,匹配指定目录下以及其子目录所有的以 .php 结尾的文件,都拒绝访问。但对于以 php 结尾的URL(如:study.batsing.com/php )是不会被过滤掉的。当访问被过滤的目录中的以 .php 为后缀的文件时,将会遇到 Forbidden 的 403 错误,从而有效阻止可能非法上传的脚本文件的执行。下面这一段摘抄自 西部数码虚拟主机目录保护功能 的说明。

  1. “目录保护”功能,主要用于限制指定目录的脚本执行权限。通常对允许用户上传文件的目录设置为可写权限,同时用目录保护取消该目录的脚本执行权限,以防止黑客上传病毒木马。
  2. 通常用户网站被黑(如网页被篡改,文件被盗,被删等)都是因为黑客通过网站的文件上传功能将asp/php木马上传到空间并运行造成的。 所以在无法确认系统是否存在上传漏洞的情况下,只要保证文件上传目录没有脚本运行权限,那么即便黑客将木马上传到您的空间他也无法运行,这样就无法危及您的网站,使您网站更安全。
  3. 设置后的目录不能运行脚本程序。

八、禁止项目目录某些文件夹的直接访问

大多数的MVC框架应用目录,如 ./Application 等,不应直接访问,均需通过入口文件;

方案一:项目host.conf添加

#    禁用某些目录的直接访问
<Directory ~ "/Application">
<FilesMatch "(.*)$">
Order allow,deny
Deny from all
</FilesMatch>
</Directory>

方案二:在该目录下放入 .htaccess 文件,里面写上这个内容

#项目目录屏蔽所有没经过入口文件,直接URL访问的
<FilesMatch "(.*)">
Deny from all
</FilesMatch>

九、配置https

mod_ssl.so扩展模块

  1. 检查apache的 modules/mod_ssl.so 文件是否存在,如果不存在则先  yum install mod_ssl
  2. 从 /usr/lib64/httpd/modules 文件夹中找到 mod_ssl.so文件,拷到apache的 modules目录
  3. 修改 httpd.conf 配置文件,在 Listen 80 下一行加上 Listen 443
  4. 找到 #LoadModule ssl_module modules/mod_ssl.so ,把前面的#去掉(即去掉注释)
  5. (yum install mod_ssl 时可能会安装了另一个新的apache并注册为httpd服务,参考上面第四条修改服务为原本的apache)
  6. 如果原来已经有mod_ssl,注意检查版本,以免出现“心血漏洞” , 附:心血漏洞检测脚本工具

vhost配置

  xxx.pem (或 xxx.crt 或 xxx.cer)为证书文件,  xxx.key 为ssl私钥

  注:自签发的ssl证书,现在的浏览器已经不承认了,配了这种别人反而会打不开网站

<VirtualHost *:443>
DocumentRoot "/home/mywebsite"
ServerName www.batsing.com
ServerAlias m.batsing.com batsing.com
<IfModule mod_ssl.c>
SSLEngine on
SSLCertificateFile /home/ssl/batsing.com.pem
SSLCertificateKeyFile /home/ssl/batsing.com.key
</IfModule>
</VirtualHost>

配置http自动跳转https

<VirtualHost *:80>
DocumentRoot "/home/mywebsite"
ServerName www.batsing.com
ServerAlias m.batsing.com batsing.com
# http -> https
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^(.*)$ https://www.batsing.com$1 [R=permanent,L]
</IfModule>
</VirtualHost>

十、手机浏览器自动跳转到移动版

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.batsing.com$ [NC] # 要限定PC版的域名,不然会使手机端产生重定向循环错误
RewriteCond %{HTTP_USER_AGENT} "Mobile" [NC] # 含Mobile字眼的浏览器(包括微信、UC移动、QQ移动、Safari移动、安卓原生等)
RewriteRule ^(.*)$ http://m.batsing.com$1 [R=301,NC,L] #跳转到移动端对应的地址
# RewriteRule ^(.*)$ http://m.batsing.com [R=301,NC,L] #跳转到移动端的首页
</IfModule>

说明:.htaccess保存立即生效,xxx.conf需要重启/重载Apache才能生效。

零、Linux 下 Apache基本操作命令

基本的操作方法:
如果apache安装成为linux的服务的话,可以用以下命令操作:

service httpd start #启动
service httpd restart #重新启动
service httpd stop #停止服务

不是linux服务的话:
本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况

apahce启动命令:
推荐/usr/local/apache2/bin/apachectl start 启动
apache停止命令
/usr/local/apache2/bin/apachectl stop   停止
apache重新启动命令:
/usr/local/apache2/bin/apachectl restart 重启
要在重启 Apache 服务器时不中断当前的连接,则应运行:
/usr/local/sbin/apachectl graceful

将apache注册为linux服务:

cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd
chkconfig --add httpd

附:一个完整的典型域名配置文件 batsing.com.conf

Apache配置手札的更多相关文章

  1. apache配置 php中没有php5apache2_4.dll

    apache配置 php中没有php5apache2_4.dll 今天,在win7系统下安装Apache+PHP+MySQL时,终于体会到了版本多也不一定是好事,各种不兼容,主要是因为动态包的多少问题 ...

  2. Apache 配置多站点访问「为项目分配二级域名」

    一级域名(baidu.com)也叫作顶级域名,注册一级域名是需要付费的. 而二级域名(image.baidu.com)是一级域名的延伸,所以只要购买了一级域名,二级域名是可以任意配置的. 其实(www ...

  3. 【转】Apache 配置虚拟主机三种方式

    Apache 配置虚拟主机三种方式  原文博客http://www.cnblogs.com/hi-bazinga/archive/2012/04/23/2466605.html 一.基于IP 1. 假 ...

  4. Tomcat:利用Apache配置反向代理、负载均衡

    本篇主要介绍apache配置反向代理,介绍了两种情况:第一种是,只使用apache配置反向代理:第二种是,apache与应用服务器(tomcat)结合,配置反向代理,同时了配置了负载均衡. 准备工作 ...

  5. Apache 配置多端口

    Apache 配置多端口,主要是以下步骤 1. 如果电脑是64位的,官网上下载WampServe,装的过程中如果出现msvcp110.dll丢失的话,解决办法如下: 1.1 首先是打开浏览器,在浏览器 ...

  6. linux apache 配置URL地址栏大小写不敏感配置

    1.apache配置 解决如下:把mod_speling.so放到apache目录下的 lib中... 然后修改http.conf文件, 加入:LoadModule speling_module /u ...

  7. CentOS下Apache配置多域名或者多端口映射

    CentOS下Apache默认网站根目录为/var/www/html,假如我默认存了一个CI项目在html文件夹里,同时服务器的外网IP为ExampleIp,因为使用的是MVC框架,Apache需开启 ...

  8. Apache配置HTTPS功能

    apache配置https 一.yum 安装openssl和openssl-devel,httpd-devel 二.生成证书(也可以从公司的证书颁发机构获取): #建立服务器密钥 openssl ge ...

  9. Apache配置--用户认证(针对目录访问)-update2015-05-02

    通过Apache配置可以限制用户对目录的访问,会弹出像phpadmin一样的登陆框. ========================================================= ...

随机推荐

  1. AD RMS 配置指南 附结合SharePoint使用

    本文的 RMS配置 是独立安装的配置手册,如果要和SharePoint结合使用可以作为参考指南. SharePoint安装可参考 点击链接 同样可提供给Office使用,当然Exchange也可以使用 ...

  2. iOS 根据银行卡号判断银行名称

    如何根据银行卡号判断银行名称? + (NSString *)getBankName:(NSString*) cardId{ //"发卡行.卡种名称", NSArray* bankN ...

  3. IOS RunLoop 常驻线程的实现

    线程常驻,正如其名,我们要实现的事让一个线程长期存在,不被销毁. 这时会有人说,那还不简单吗. 但是这里我们要实现的事如何让线程座椅待命,而且并不是主线程. 首先介绍一下正常情况下的线程使用. // ...

  4. IOS 杂笔-17(堆区栈区等)

    栈区(stack):由系统自动分配,一般存放函数参数值.局部变量的值等.由编译器自动创建与释放.其操作方式类似于数据结构中的栈,即后进先出.先进后出的原则. 例如:在函数中申明一个局部变量int b; ...

  5. 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引

    什么是solr solr是基于Lucene的全文搜索服务器,对Lucene进行了扩展优化. 准备工作 首先,去下载以下软件包: JDK8:jdk-8u60-linux-x64.tar.gz TOMCA ...

  6. 基于redis分布式缓存实现(新浪微博案例)

    第一:Redis 是什么? Redis是基于内存.可持久化的日志型.Key-Value数据库 高性能存储系统,并提供多种语言的API. 第二:出现背景 数据结构(Data Structure)需求越来 ...

  7. SQL SERVER 2000 迁移后SQL SERVER代理服务启动错误分析

    公司有一个老系统,这个系统所用的数据库是SQL SERVER 2000,它所在的Dell服务器已经运行超过10年了,早已经过了保修服务期,最近几乎每周会出现一次故障,加之5月份另外一台服务器坏了两个硬 ...

  8. RMAN命令LIST操作总结

    在使用RMAN备份.还原的过程中,我们经常需要查看备份的一些详细信息,例如,RMAN提供了LIST命令.关于LIST命令的详细信息 可以参考Oracle Database Backup and Rec ...

  9. EasyUI 中点击取消按钮关闭Dialog(对话框窗口)

    <div id="dl1" class="easyui-dialog" title="窗口"style="width:400 ...

  10. W3School-CSS 轮廓(Outline)实例

    CSS 轮廓(Outline)实例 CSS 实例 CSS 背景实例 CSS 文本实例 CSS 字体(font)实例 CSS 边框(border)实例 CSS 外边距 (margin) 实例 CSS 内 ...