关键词:
前言
有时候,我们需要多个站点来实现多个需求。一般情况我们都会在站点根目录(如apache/htdocs)下创建多个文件夹:
服务器目录 | 访问地址 | 功能 |
---|---|---|
apache/htdocs/a | www.xxx.com/a/* | a |
apache/htdocs/b | www.xxx.com/b/* | b |
apache/htdocs/c | www.xxx.com/c/* | c |
然而这种做法的隔离效果不太好, 在我们只有一台服务器一个IP的情况下,理想的做法是这样的:
服务器目录 | 访问地址 | 功能 |
---|---|---|
apache/htdocs/a | a.xxx.com/* | a |
apache/htdocs/b | b.xxx.com/* | b |
apache/htdocs/c | c.xxx.com/* | c |
修改配置文件
打开appache/conf/http.conf, 在最后面加上:
NameVirtualHost *
<VirtualHost *:80>
ServerAdmin admin@xxx.com
DocumentRoot /usr/local/apache/htdocs/a
ServerName a.xxx.com
</VirtualHost>
#
NameVirtualHost *
<VirtualHost *:80>
ServerAdmin admin@xxx.com
DocumentRoot /usr/local/apache/htdocs/b
ServerName b.xxx.com
</VirtualHost>
#
NameVirtualHost *
<VirtualHost *:80>
ServerAdmin admin@xxx.com
DocumentRoot /usr/local/apache/htdocs/c
ServerName c.xxx.com
</VirtualHost>
保存重启appache即可。
拓展
在Apache与Tomcat的整合中,已经用Apache连接了Tomcat,下面就为Java站点和PHP站点分配不同域名。
blog.tung7.com用于访问JAVA站点,而blog2.tung7.com用于访问PHP站点。
同样找到appache/conf/http.conf。在最后添加或修改(下面关于Log的配置自行修改):
# 设置虚拟主机
# For Tomcat
NameVirtualHost blog.tung7.com:80
<VirtualHost blog.tung7.com:80>
#定义服务名称
ServerName blog.tung7.com
#定义站点项目所在路径。
DocumentRoot "D:/Apache Software Foundation/Tomcat 7.0/webapps
DirectoryIndex login.jsp index.html index.htm
JkMount /* blog
JkUnMount /*.html blog
JkUnMount /*.htm blog
</VirtualHost>
<Directory "D:/Apache Software Foundation/Tomcat 7.0/webapps">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# For PHP
NameVirtualHost blog2.tung7.com:80
<VirtualHost blog2.tung7.com:80>
ServerAdmin zhuyuandong@vip.qq.com
ServerName blog2.tung7.com
DocumentRoot "D:\\AppServ\\www"
DirectoryIndex index.html index.htm index.php
ErrorLog logs/blog2-error_log.txt
CustomLog logs/blog2-access_log.txt common
</VirtualHost>
保存重启Apache,即可。
然而这里还有一个问题,就是我们如果直接使用IP访问结果会怎么样?
实际上,Apache有一个默认的VirtualHost用于IP访问,当httpconf中NameVirtualHost的时候,第一个声明的VirtualHost将用于IP访问。所以,现在如果直接使用IP访问的话,将会访问到JAVA站点。BUT, 我们一般都是禁止使用IP直接访问的,下面来实现禁止IP直接访问。
禁止IP直接访问
第一种方法
同样在http.conf中添加一个VirtualHost
# Forbidden IP
NameVirtualHost 121.121.121.121:80
<VirtualHost 121.121.121.121:80>
#必需指定这个ip地址
ServerName 121.121.121.121
<Location />
Order allow,deny
Deny from all
</Location>
</VirtualHost>
访问将返回403错误。
当然,我们可以很闷骚地自己设计错误页面。在<VirtualHost *:80>和加入以下代码:
ErrorDocument 500 /500.html
ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
第二种方法
第一种方法只是返回403,并没有确切告诉访问者禁止IP访问。
# Forbidden IP
NameVirtualHost 121.121.121.121:80
<VirtualHost 121.121.121.121:80>
ServerName 121.121.121.121
DocumentRoot "c:\\AppServ\\www\\nosite"
DirectoryIndex index.html
</VirtualHost>
相当于为该IP新建一个站点nosite,然后在里面新建一个设计好的index.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Forbidden View By IP</title>
</head>
<body>Your Nice Design</body>
</html>
然后直接访问IP就会访问到nosite站点下的index.html了。
apache_conf示例blt和drupalvm多站点配置(代码片段)
多站点虚拟主机配置
1.默认的初始站点配置apache安装后,有一个默认站点,其配置都在apache的主配置文件(apache/conf/http.conf)中。主要包括如下几项:1. 站点域名: ServerName localhost 域名是可以设置的!2.站点位置(文件夹位置... 查看详情
在一台apache服务器上创建多个站点(不同域名)(代码片段)
...要访问哪一个网站。例如要在一台服务器上设置如下两个站点:http://www.test1.comhttp://www.test1.com下面以CentOS7.2系统为例,详细说明如何配置基于不同域名的Apache虚拟主机。第一步:开启Apache的 查看详情
php多站点多域设置多站点多域多站点多域多选(代码片段)
apache配置多个https站点(代码片段)
工作中经常会遇到多个站点实现https访问,并指向同一个网页,本文将详解如何在Centos环境下配置Apache多站点实现HTTPS访问。准备工作OS:CentOSrelease6.8(Final)Web:Apache安装Apache1、安装Apache[[email protected]~]#yuminstallhttpd-y2、启动服... 查看详情
apache配置基于域名的虚拟主机(代码片段)
一、设定模拟域名 www.wang.org、blog.wang.org、bbs.wang.org站点目录/var/html/www、/var/html/blog、/var/html/bbs二、实现步骤:1.创建站点目录2.向三个index中写入内容,方便测试3.cd到apache的conf目录下的extra添加三个站点的配置<VirtualH... 查看详情
一个nginx服务器配置多站点(代码片段)
有时候你想在一台服务器上为不同的域名运行不同的站点。比如www.siteA.com作为博客,www.siteB.com作为论坛。你可以把两个域名的IP都解析到你的服务器上,但是没法在Nginx的根目录里同时运行两个不同的网站。这时候,你就需要使... 查看详情
apche2.4多站点虚拟主机设置
http://blog.csdn.net/sinat_27938829/article/details/77141447Apache2.4.6多域名多网站配置原创 2017年08月13日12:16:53标签:apache520用的是Centos7.264位的系统 Apache2.4.6安装Apache#查看httpd包是否可用:yumlist|grephttpd#安装Apach 查看详情
apache配置与应用(代码片段)
...主机概述虚拟Web主机指的是在同一台服务器中运行多个Web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟”Web主机优点通过虚拟Web主机服务可以充分利用服务器的硬件资源,从而大大降低网... 查看详情
apache配置与应用(代码片段)
...主机概述虚拟web主机指的是在同一台服务器中运行多个web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟“Web主机”通过虚拟web主机服 查看详情
apache配置与应用(代码片段)
...主机概述虚拟web主机指的是在同一台服务器中运行多个web站点,其中每一个站点实际上并不独立占用整个服务器,因此被称为“虚拟“Web主机”通过虚拟web主机服 查看详情
apache多站点实现原理
参考技术A很多人常常看到一台服务器上跑多个站点,不同的域名访问不同的站点,就会有个疑惑:访问的时候并没有在地址栏中加入端口号,多个域名都是解析到这个服务器的IP地址,服务器怎么能够正确的分辨和解析呢?其实... 查看详情
apache配置(代码片段)
Apache配置1虚拟主机1.1虚拟主机-基于IP1.2虚拟主机-基于IP+端口1.3虚拟主机+基于域名2rewrite地址重写3简述Apache的三种工作模式3.1prefork模式3.2worker模式3.3为什么不直接使用多线程(即在一个进程内实现多进程),还... 查看详情
apache配置(代码片段)
Apache配置1虚拟主机1.1虚拟主机-基于IP1.2虚拟主机-基于IP+端口1.3虚拟主机+基于域名2rewrite地址重写3简述Apache的三种工作模式3.1prefork模式3.2worker模式3.3为什么不直接使用多线程(即在一个进程内实现多进程),还... 查看详情
sh新dev站点的apache配置(代码片段)
httpd配置-默认虚拟主机(代码片段)
...服务器上可以配置多个虚拟主机,实现一个服务器提供多站点服务,其实就是访问同一个服务器上的不同目录。一个服务器主机可以运行多个网站,每个网站都是一个虚拟主机;任何一个域名解析到这台机器,都可以访问的虚拟... 查看详情
虚拟主机.htaccess伪静态(url重写)建立多站点(代码片段)
...ess伪静态,即可以实现绑定域名到子目录、一个空间多个站点。应用举例:绑定www.qijingling.com到htaccess目录根目录下.htaccess内容<IfModulemod_rewrite.c>RewriteEngineOnRewriteBase/#绑定www.qijingling.com到子目录htaccessRewriteCond% 查看详情
ubuntu20安装nginx支持多站点及代理配置(代码片段)
...l、redis、net6及部署应用 GO接着本次配置通过域名访问站点,站点总共分为两个,前端、后端项目为前后端分离,管理包括服务+管理UI,为一个站点,管理UI,放到服务某个文件夹中Web访问为另一个站点。一、安装Nginxsudoapt-get... 查看详情