Apache - 多个站点 - 一个服务器 - 不同端口 - Linux

Apache - 多个站点 - 一个服务器 - 不同端口 - Linux

目前我有一个 Apache2 在监听端口 80。这是在 /etc/apache2/listen.conf 中配置的

在 /etc/apache2/conf.d 中我有常规配置文件和:

站点1.conf站点2.conf站点3.conf 文件。

每个配置文件的配置非常相似:

Alias /site1 /home/user/www/site1/

AddHandler cgi-script cgi

<Directory "/home/user/www/site1/">
  AllowOverride All
  Options +ExecCGI

  <IfModule mod_authz_core.c>
    Require all granted
  </IfModule>

  <IfModule !mod_authz_core.c>
    Order allow,deny
    Allow from all
  </IfModule>

  DirectoryIndex index.cgi
</Directory>

因此,我可以进入浏览器输入:

http://10.10.0.1/site1并获取 site1,http://10.10.0.1/site2并获取 site2 等

这在内部运行良好。

我现在想允许 site2 和 site3 被外部访问。

如果我在路由器上打开端口 80 并将其路由到 10.10.0.1,那么所有站点都可用。

我已将 8080 和 8888 添加到 /etc/listen.conf,并将 site2.conf 编辑为:

<VirtualHost *:8080>
 Alias /site2 /home/user/www/site2/

    AddHandler cgi-script cgi

    <Directory "/home/user/www/site2/">
      AllowOverride All
      Options +ExecCGI

      <IfModule mod_authz_core.c>
        Require all granted
      </IfModule>

      <IfModule !mod_authz_core.c>
        Order allow,deny
        Allow from all
      </IfModule>

      DirectoryIndex index.cgi
    </Directory>
</VirtualHost>

和 site3 相同,但将 VirtualHost 设置为 *:8888

这有效。我只能在 8080 上访问 site2,只能在 8888 上访问 site3

我还可以通过端口 8080 和端口 8888 访问 site1

我想要的是:

  • site1 仅可从端口 80 访问
  • site2 仅可从端口 8080 访问
  • site3 仅可从端口 8888 访问

路由器只开放了8080和8888并进行路由。

知道该怎么做吗?

谢谢

答案1

我从未尝试过,我只是使用DocumentRoot没有相应命名主机的 Apaches 指令进行了测试ServerName- 并且在我的计算机上成功运行。
这个想法是尝试让虚拟主机与文件路径匹配,尝试替换此内容:

Alias /site2 /home/user/www/site2/

DocumentRoot /home/user/www/site2

Apache 文档

指定的 DocumentRoot 不应带有尾部斜杠。

所以你得到

<VirtualHost *:8080>
 DocumentRoot /home/user/www/site2

    AddHandler cgi-script cgi

    <Directory "/home/user/www/site2/">
      AllowOverride All
      Options +ExecCGI

      <IfModule mod_authz_core.c>
        Require all granted
      </IfModule>

      <IfModule !mod_authz_core.c>
        Order allow,deny
        Allow from all
      </IfModule>

      DirectoryIndex index.cgi
    </Directory>
</VirtualHost>

在一个虚拟主机网站组合上尝试,如果有效则在其他组合上重复。 - 修改 vhosts 后不要忘记重新启动 apache - 如果更改指令,则可能必须这样做Listen

Apache 有在不同端口上运行多个网站的指南
这是基于 apache 2.2 的,文档说

[您必须使用] NameVirtualHost xxxx:8080 - 如果没有 NameVirtualHost 名称:端口或者您尝试使用 Listen 指令,您的配置将不起作用。

我在 Ubuntu 2.4 上测试过,没有这个NameVirtualHost,运行良好

相关内容