首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用单一域名和单一IP地址的Apache服务两个网站

问使用单一域名和单一IP地址的Apache服务两个网站
EN

Stack Overflow用户
提问于 2010-02-10 04:11:50
回答 3查看 7.6K关注 0票数 7

我正尝试在同一个Ubuntu服务器上使用Apache托管两个网站。我有一个ip地址,并且我只有一个域(解析为ip地址)。所以我想请求域名给一个网站,并请求ip地址给另一个。

我在/etc/apache2/ sites enabled中有指向两个文件的符号链接,指向我的两个站点的配置。

其中一个包含:

代码语言:javascript
复制
<VirtualHost 1.2.3.4:80>
    ServerName 1.2.3.4
    stuff
</VirtualHost>

而另一个包含

代码语言:javascript
复制
<VirtualHost domain.net:80>
    ServerName domain.net
    stuff
</VirtualHost>

但是,当我启动Apache时,我收到以下消息:

代码语言:javascript
复制
[warn] VirtualHost 1.2.3.4:80 overlaps with VirtualHost domain.net:80, the first has precedence, perhaps you need a NameVirtualHost directive

当我将浏览器指向domain.net或1.2.3.4时,我会得到与ip地址相关联的站点。

如果我删除任何一个符号链接,然后将浏览器指向域名或ip地址,就会得到唯一启用的网站。(正如您所希望的那样。)

据我所知,启用站点的两个配置文件都是同时加载的,并且包含ip地址的配置文件胜过包含域名的配置文件。该警告建议查看NameVirtualHost指令,但我在网上找到的所有帮助都是指两个域名指向同一ip地址的情况。

一如既往,我们将非常感谢您的帮助或建议。

(无论如何,这两个网站都是Rails应用程序,我使用Passenger进行部署,但我认为这在这里并不重要。)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-10 04:16:20

我是这样做的:

代码语言:javascript
复制
NameVirtualHost 1.2.3.4:80

<VirtualHost 1.2.3.4:80>
    ServerName localhost
    DocumentRoot /var/www/default
</VirtualHost>

<VirtualHost 1.2.3.4:80>
    ServerName mydomain.net
    DocumentRoot /var/www/mydomain
</VirtualHost>

Apache会为每个请求寻找合适的虚拟主机。如果它找不到与ServerName或任何ServerAliases匹配的any,那么它将获取第一个any。在第一个VirtualHost中使用什么ServerName并不重要,因为如果其他VirtualHosts都不匹配,它将始终被使用。

票数 10
EN

Stack Overflow用户

发布于 2011-11-04 12:41:41

遇到这个问题,下面是我所做的:

编辑httpd.conf

代码语言:javascript
复制
sudo vi /etc/apache2/httpd.conf

添加此行

代码语言:javascript
复制
NameVirtualHost *:80

注意:您可以用your_ip_address:80替换*:80

现在创建域名配置文件。我使用domain_name.com

代码语言:javascript
复制
sudo vi /etc/apache2/sites-available/domain.com

将此代码添加到文件中

代码语言:javascript
复制
<VirtualHost *:80>
     ServerAdmin admin@domain.com
     ServerName www.domain.com
     ServerAlias domain.com
     DocumentRoot /var/www/domain.com/public_html/
     ErrorLog /var/www/domain.com/logs/error.log
     CustomLog /var/www/domain.com/logs/access.log combined
</VirtualHost>

确保domain.com配置中的目录存在

代码语言:javascript
复制
/var/www/domain.com/public_html/
/var/www/domain.com/logs

注意:如果需要,可以像这样使用mkdir命令

代码语言:javascript
复制
sudo mkdir /var/www/domain.com/public_html/
sudo mkdir /var/www/domain.com/logs

现在我们需要启用新的配置文件,如下所示

代码语言:javascript
复制
sudo a2ensite domain.com

您应该会看到重新启动apache的通知,请使用以下命令

代码语言:javascript
复制
/etc/init.d/apache2 restart

现在我们需要一个测试文件来查看

代码语言:javascript
复制
sudo vi /var/www/domain.com/public_html/index.html

添加一些文本

代码语言:javascript
复制
Hello domain.com

打开您的web浏览器并转到新域

代码语言:javascript
复制
http://domain.com
票数 4
EN

Stack Overflow用户

发布于 2010-02-10 04:18:25

请确保您有说明

代码语言:javascript
复制
NameVirtualHost *:80

在/etc/apache2/ports.conf中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2232205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档