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

可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. 0x80040E14 Caused by Max Url Length bug

    We get a case when the customer access a SharePoint site, he meet an error on SharePoint. 0x80040E14 ...

  2. iOS中的交换空间(swap space)

    看来是没有交换空间,原因是闪存和SSD硬盘相比,速度很慢,也有电源管理的原因. the NAND flash is not designed to be used as swap. It is dam ...

  3. sublime text2 bracketHighLighter 配置

    一.BracketHighlighter能为ST提供括号,引号这类高亮功能,但安装此插件后,默认没有高亮,只有下划线表示,不是很醒目,需要如下配置1. 在ST中用package control安装Br ...

  4. INITIAL参数设置导致TRUNCATE TABLE不能降低高水位线案例

    在一个数据库使用下面SQL找出了一批需要降低高水位线的表,其中有几个表没有数据,于是我打算用TRUNCATE来降低高水位线HWM SELECT a.owner,        a.segment_na ...

  5. SQL Server删除distribution数据库二

    以前总结过一遍博文SQL Server删除distribution数据库,里面介绍了如何删除distribution数据库.今天介绍一个删除distribution的特殊案例, 在这之前,我不知道这个 ...

  6. 用python pickle库来存储数据对象

    pickling有一个更常用的叫法是serialization,它是指把python对象转化成字节流byte stream, unpickling就是把byte stream转换成对象.python的 ...

  7. Cmake的交叉编译

    http://www.cmake.org/Wiki/CMake_Cross_Compiling

  8. kafka集群安装

    主要需要设置的是conf文件夹中的server.properties文件, broker.id,不同的机器节点,使用不同的id号,不能重复. num.network.threads=8 num.par ...

  9. (转)java DecimalFormat用法

    DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字. DecimalFormat 包含一个模式 和一组符号 符号含义:   0 一个数字   # 一个数字, ...

  10. 浅析selenium的PageFactory模式

    前面的文章介绍了selenium的PO模式,见文章:http://www.cnblogs.com/qiaoyeye/p/5220827.html.下面介绍一下PageFactory模式. 1.首先介绍 ...