我可以让一个 apache 服务器从几台机器提供服务吗?

我可以让一个 apache 服务器从几台机器提供服务吗?

我家里的设置如下:

互联网 -> pfSense 路由器 -> 多台 Windows 7 机器 Ubuntu NAS w/Webmin

我有动态 DNS 设置,因此我使用 pfSense WAN 盒更新 www.domainname.com

例如,在两台 Windows 7 机器上安装 Java VNC 网络服务器,我可以进行如下设置:

www.domain.com:5800 是 PC1 www.domain.com:5901 是 PC2

我想知道的是,是否可以在 ubuntu 机器上安装 apache,将 80 端口流量转发给它,并将其设置为例如

www.domain.com/PC1 重定向到默认端口上的 PC1 java vnc 服务器 www.domain.com/PC2 重定向到 PC2 vnc 等等。

如果可能的话,将不胜感激一些指点。

答案1

尝试 apache 重写引擎。类似于:

<VirtualHost ubuntu:80>
    ServerName domainname.com
    RewriteCond %{REQUEST_URI}      ^/PC1
    RewriteRule ^/(.*)$             http://pc1:5800/$1 [R=permanent,L]
    RewriteCond %{REQUEST_URI}      ^/PC2
    RewriteRule ^/(.*)$             http://pc1:5901/$1 [R=permanent,L]
</VirtualHost>

更新。我刚刚意识到您可能还想让这两台电脑无法通过互联网连接,即位于路由器后面且没有外部 IP。在这种情况下,您必须修改上述内容,以便它将请求重定向到不同端口上的同一台 ubuntu 机器,然后通过代理传递到本地 Windows 服务器:

<VirtualHost ubuntu:80>
    ServerName domainname.com
    RewriteCond %{REQUEST_URI}      ^/PC1
    RewriteRule ^/(.*)$             http://ubuntu:5800/$1 [R=permanent,L]
    RewriteCond %{REQUEST_URI}      ^/PC2
    RewriteRule ^/(.*)$             http://ubuntu:5901/$1 [R=permanent,L]
</VirtualHost>

<VirtualHost ubuntu:5800>
    ServerName domainname.com
    ProxyPass / http://pc1:5800/
    ProxyPassReverse / http://pc1:5800/
</VirtualHost>

<VirtualHost ubuntu:5901>
    ServerName domainname.com
    ProxyPass / http://pc2:5901/
    ProxyPassReverse / http://pc2:5901/
</VirtualHost>

呼...希望这有帮助...:)

答案2

尝试这个:

<VirtualHost ubuntu:80>
  ServerName domainname.com
  ProxyPass /PC1 http://pc1:5901/
  ProxyPassReverse /PC1 http://pc1:5901/
  ProxyPass /PC2 http://pc2:5901/
  ProxyPassReverse /PC2 http://pc2:5901/
</VirtualHost>

比弄乱要容易得多RewriteRule

相关内容