使用Apache 2.4在Linode.com提供商的Linux(Ubuntu)上托管多个域

使用Apache 2.4在Linode.com提供商的Linux(Ubuntu)上托管多个域,apache,virtual-hosts,Apache,Virtual Hosts,我有一个Linode.com上的Ubuntu。我正在尝试托管多个网站(域,每个域将侦听不同的端口)。以下是我所做的: 在mysite.com.conf文件中: Listen *:81 <VirtualHost *:81> ServerName mysite.com ServerAlias www.mysite.com </VirtualHost> 然后在终端中运行命令: sudo a2ensite mysite.com.conf sudo service apa

我有一个Linode.com上的Ubuntu。我正在尝试托管多个网站(域,每个域将侦听不同的端口)。以下是我所做的: 在mysite.com.conf文件中:

Listen *:81
<VirtualHost *:81>
  ServerName mysite.com
  ServerAlias www.mysite.com
</VirtualHost>
然后在终端中运行命令:

sudo a2ensite mysite.com.conf
sudo service apache2 restart
然后我为域mysite.com设置DNS管理器 但当我从浏览器访问mysite.com时,它总是监听端口80。所以,当我如上所述设置multiply虚拟主机文件时,对于不同的域,它们都只是路由到端口80。 您知道我错过了哪一步,以及如何告诉Apache根据传入的域名重新分配到不同的端口吗? 我遵循了教程。

Tran

我有这个在我的配置,希望它将帮助你

但首先,您需要通过执行此操作禁用000 default.conf

sudo a2dissite 000-default.conf sudo a2000-default.conf 然后添加希望apache侦听的端口 例如,我的apache侦听以下端口 我的配置文件中的801000和端口8000ports.conf

# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
#如果您只是在此处更改端口或添加更多端口,您也可能
#必须更改中的VirtualHost语句
#/etc/apache2/sites enabled/000-default.conf
听80
听我说
听我说
#vim:syntax=apachets=4sw=4sts=4srnoet
那么您的mysite.com.conf应该是这样的

<VirtualHost *:80>

        ServerName mysite.com
        ServerAlias www.mysite.com

        ServerAdmin admin@mysite.com
        DocumentRoot /path/to/mysite.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
mysite.com

服务器名mysite.com
ServerAlias www.mysite.com
服务器管理员admin@mysite.com
DocumentRoot/path/to/mysite.com
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
完成所有这些工作后,编写以下命令

sudo a2ensite mysite.com.conf sudo service apache2 restart sudo a2ensite mysite.com.conf sudo服务apache2重启 然后尝试像这样访问您的站点

<VirtualHost *:80>

        ServerName mysite.com
        ServerAlias www.mysite.com

        ServerAdmin admin@mysite.com
        DocumentRoot /path/to/mysite.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>
mysite.com mysite.com
希望这有帮助。谢谢

这不是端口选择的工作方式。我怀疑你真的想使用不同的端口。您必须使用https://www.mysite.com:81/之类的URL才能访问这样的http服务器。这是不可取的。相反,您希望使用“基于名称的虚拟主机”,所有主机都在同一端口号上侦听。看一下ApacheHTTP服务器的文档。这是目前托管多个主机名/域的常见技术。我在Apache网站上阅读了本教程:如果我必须在域名后添加端口,那么我可以在不使用Apache的情况下实现这一点。您所说的“那么我可以在不使用Apache的情况下实现这一点”是什么意思?您当然会使用apache http服务器,而且您当然必须对其进行配置—无论您使用的是基于名称的虚拟主机还是基于端口的虚拟主机。如果您将端口放在域名后面,例如:mysite.com:8080或mysite.com:9090,则不必安装apache,也不必进行任何配置。你不需要Apache就可以工作。如果你在Ubuntu上通过ufw打开端口8080,那么mysite.com:8080不需要Apache就可以工作。嗯,对不起,没有。你肯定需要一个http服务器。您还希望如何为http提供服务?您当然可以使用另一个http服务器软件,它不必是apache实现。但是你需要一些。我想要的只是访问:mysite.com,它会自动查找该域的端口并重新路由到它。mysite.com:8080对于普通用户来说不是正确的选择。你是否尝试过像这样访问你的网站而没有添加8080并且没有工作如果我没有将端口8080放在域之后,那么它将自动重新路由到端口80。请签出我编辑的内容,因为它可能会有所帮助Hey V.Tran,我的回答有帮助吗