IIS&Apache虚拟主机设置(主机头,一服多站)
在“默认web站点”上按鼠标右键,选择“新建”->“站点”。按“下一步”。
输入站点说明,如“站点1”。按“下一步”。
在“站点的主机头”上输入域名,如“abc.dns0755.net”。按“下一步”。
在路径里指定站点的根目录路径。按“下一步”。
在权限里选择适当的权限。按“下一步”,即可完成。
如果配置的是顶级域名的虚拟主机,例如在上面第4步主机头里输入“abc.com”,而同时又希望用户使用“www.abc.com”也能访问。设置步骤如下:
在“Internet服务管理器”的“站点1”上按鼠标右键,选择“属性”。
在IP地址右边点击“高级”。
点击“添加”,输入端口号(一般用80),再输入主机头名“www.abc.com”。
如果你只有一个站点,无需其它虚拟主机,那么就只需建立一个Web站点就可以了,连默认站点的主机头也可以省了:)
建立一个Web站点:
假设你有域名aaa.com,自己的网页放在D:\web1目录下,网页的首页文件名为Index.htm,现在想根据这些建立自己的Web服务器。
对于此Web站点,我们可以用现有的“默认Web站点”来做相应的修改后,就可以轻松实现。请先在“默认Web站点”上单击右键,选“属性”,以进入名为“默认Web站点属性”设置界面。
1.IP地址:转到“Web站点”窗口,IP地址栏选择默认的“(全部未分配)”
2.修改主目录:转到“主目录”窗口,再在“本地路径”输入(或用“浏览”按钮选择)好自己网页所在的“D:\web1”目录。
3.添加首页文件名:转到“文档”窗口,再按“添加”按钮,根据提示在“默认文档名”后输入自己网页的首页文件名“Index.htm”。
4. 添加虚拟目录:比如你的主目录在“D:\web1”下,而你想输入“www.aaa.com/bbs”的格式就可调出“D:\bbs”中的网页文件,这里 面的“bbs”就是虚拟目录。请在“默认Web站点”上单击右键,选“新建→虚拟目录”,依次在“别名”处输入“bbs”,在“目录”处输入“D:\ bbs”后再按提示操作即可添加成功。
5.效果的测试:打开IE浏览器,在地址栏输入“www.aaa.com”之后再按回车键,此时就能够调出你自己网页的首页,输入“www.aaa.com/bbs”调出你“D:\bbs”中的网页,则说明设置成功!
建立虚拟主机(增加主机头):
虚拟主机是指在一台服务器里运行几个网站
假 如你有几个域名aaa.com,bbb.com,以及想用如bbs.aaa.com想分别对应几个不同站点。其中,aaa.com站点的网页放在D:\ web1下,默认首页为index.htm,bbb.com站点的网页放在D:\web2下,默认首页为index.htm,bbs.aaa.com 站 点的网页放在D:\bbs下可以用设置不同“主机头名”的方法,让你直接用域名来完成对不同Web站点的访问。
前面已经建立了一个web站点了,这是IIS默认的站点。将其主机头添加为www.aaa.com即可以绑定到www.aaa.com。
下一步将说明如何建立另外一个站点www.bbb.com ,也就是我们要的虚拟主机。
1. 在“默认Web站点”处单击右键,选“新建→站点”,然后根据提示在“说明”处输入任意用于说明它的内容(比如为“bbb.com”),然后点下一步;
2. IP地址栏选择默认的“(全部未分配)”。端口栏用默认的80。“此站点的主机头”这个栏目输入www.bbb.com,然后点下一步;
3. 后面的步骤根据提示,用默认的就可以了,记得主目录要指定到bbb.com站点的网页存放目录哦(此例中是:D:\web1)。
现在你已经建立(或设置)好了两个Web站点,一个是“aaa.com”(为方便起见把‘默认的web站点’改为“aaa.com”),一个是 “bbb.com”,现在你想输入“www.aaa.com”可直接访问前者,输入“www.bbb.com”可直接访问后者。
一般情况下,用户都是希望在访问比如bbb.com的域名时,在IE里面输入“www.bbb.com”和“bbb.com”都可以访问该站点。其操作步骤如下:
依次选“bbb.com→右键→属性→Web站点”,单击“IP地址”右侧的“高级”按钮,在“此站点有多个标识下”,点“添加”按钮,TCP端口为80,然后在“主机头名”下输入“bbb.com”再按“确定”按钮保存退出。
同理,你想直接用bbs.aaa.com域名来完成对D:\bbs访问,步聚和建立站点www.bbb.com类似。
=================================================
Apache虚拟主机设置
1、打开Apache配置文件“httpd.conf”,查找“#NameVirtualHost *”,把这行前面的“#”去掉。
2、在“NameVirtualHost *”这行下面,增加虚拟主机站点。示例如下:
<VirtualHost >
ServerAdmin
DocumentRoot /export/home/dns0755
ServerName dns0755.net
ServerAlias *.dns0755.net
ScriptAlias /cgi-bin/ /export/home/dns0755/cgi-bin/
ErrorLog "| /usr/local/sbin/rotatelogs /var/log/http/dns0755-err.log 604800"
CustomLog "| /usr/local/sbin/rotatelogs /var/log/http/dns0755.log 604800" combined
</VirtualHost>
ServerAdmin
站点管理员Email地址
DocumentRoot /export/home/dns0755
站点根目录
ServerName dns0755.net
站点主机名
ServerAlias *.dns0755.net
站点别名,“*”表示任意字符
ScriptAlias /cgi-bin/ /export/home/dns0755/cgi-bin/
执行脚本文件存放路径
ErrorLog "| /usr/local/sbin/rotatelogs /var/log/http/dns0755-err.log 604800"
错误日志控制
CustomLog "| /usr/local/sbin/rotatelogs /var/log/http/dns0755.log 604800" combined
访问日志
/usr/local/sbin/rotatelogs是日志管理程序
/var/log/http/dns0755.log是日志文件名
604800的单位是秒,这种写法表示每隔7天产生一个日志文件
在PHP网站开发中,基于WEB服务器和PHP网站程序代码的安全考虑,我们需要对相关的目录或者文件访问权限进行控制,以防止意外情况的发生,那么我们如何来实现这种功能呢?
我们可以通过Apache来实现禁止目录访问(禁止游览列出的目录或文件列表)、禁止或允许IP与域名访问目录的功能。
访问网站目录时Apache默认配置为可列出目录/文件列表,即当你访问http://localhost时会列出相关的目录和文件列表,我们可以通过修改Apache配置文件httpd.conf来实现禁止列出目录/文件列表,方法如下:
1、打开apache配置文件httpd.conf
2、找到
|
<Directory />
Options Indexes
AllowOverride None
Order allow,deny Allow from all </Directory> |
还需注意的事:如果是自己重新设置了DocumentRoot,例如以下:修改的地方也就不同了
<Directory "D:/Apache2/webpage">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important.
# http://httpd.apache.org/docs/2.0/mod/core.html#options
# for more information.
#
#Indexes
的作用就是当该目录下没有 index.html 文件时,就显示目录结构,去掉 Indexes
,Apache 就不会显示该目录的列表了。
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#
#
#
# Controls who can get stuff from this server.
#
</Directory>
3、保存httpd.conf,并重启Apache即可,此时再访问http://localhost时, 报apache http 403 禁止访问错误信息
Forbidden
You don’t have permission to access / on this server.
还有一种方法:
可以在根目录的 .htaccess 文件中输入
<Files *>
Options -Indexes
</Files>
就可以阻止Apache 将目录结构列表出来。
内容来源:http://hi.baidu.com/amenmen/blog/item/5279190914bbb4b42fddd45b
Apache服务器上传文件夹设置禁止执行脚本文件方法
http://home.phpchina.com/space.php?uid=13636&do=blog&id=40356
http://dnbcw.com/biancheng/html/apache/DFKN35919.html
http://www.bccn.net/Article/web/php/jszl/200512/2325.html
比如某些用于保存用户上传文件(头像、签名、帖子图)等的目录,这些目录只是图片和压缩文件等,并不需要php脚本执行权限,为了避免上传漏洞这些目录需要禁止掉php脚本的执行权限,方法如下:
方法一:
<Directory "e:/webroot/test">
<Files ~ ".php">
Order allow,deny
Deny from all
</Files>
</Directory>
方法二:php_flag engine off #表示此目录下的PHP文件不被解释执行,限没有PHP权限
当以 Apache 的模块方式运行 PHP 时,也可以通过 Apache 的配置文件(例如 httpd.conf)和 .htaccess 文件中的指令来修改 PHP 的配置选项(需要“AllowOverride Options”或“AllowOverride All”权限)。
在httpd.conf文件里有关在该目录的设定里加上 (PHP4以上版本)
"php_admin_flag engine off"
例:
<Directory /srv/www/htdocs/path>
php_admin_flag engine off
</Directory>