apache多域名多站点配置(代码片段)

TungNote TungNote     2022-11-29     391

关键词:

前言

有时候,我们需要多个站点来实现多个需求。一般情况我们都会在站点根目录(如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... 查看详情