Apache:如何设置基于端口的服务器?

Apache:如何设置基于端口的服务器?

假设我想在不同的端口上托管不同的站点。服务器的内部 ip 是 192.168.1.108,外部 ip 是 170.24.180.160。并且 170.24.180.160 的 80、81 和 82 端口已被我的路由器转发。现在我想在 80、81 和 82 端口上分别托管 site80、site81 和 site82,因此如果输入 170.24.180.160:82 将转到 site82。

我尝试过这个:

Listen 80
Listen 81
...

NameVirtualHost 170.24.180.160:80
NameVirtualHost 170.24.180.160:81
...

<VirtualHost 170.24.180.160:80>
ServerName site80
DocumentRoot /home/yy/Sites/site80
</VirtualHost>

<VirtualHost 170.24.180.160:8080>
ServerName site81
DocumentRoot /home/yy/Sites/site81
</VirtualHost>
...

但它给出了错误:

*Restarting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Wed Jun 27 16:10:25 2012] [warn] NameVirtualHost *:80 has no VirtualHosts
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Wed Jun 27 16:10:25 2012] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.

我的问题是,基于上述模式,如何设置 apache?详细示例很有帮助。谢谢!

答案1

您要么有两个Listen 80指令(使 Apache 尝试监听端口 80 两次),要么您在机器上运行另一个 Web 服务器。检查端口 80 上没有其他任何东西在监听:

netstat -tlnp | grep :80

如果没有显示任何内容,请Listen 80从您的配置中删除该行(它可能已经存在于默认配置中)。

答案2

另外,如果您通过端口执行此操作,则不需要 NameVirtualHost。

相关内容