我有一个网站,我们将其命名为 example.com。现在,我已经得到了网址http://www.example.com,其 DNS 地址为 10.0.1.1(:80),该地址在我的网络上端口转发到 192.168.0.14。
我也想有一个网站http://edu.example.com它将托管在我的另一台服务器上,但我只有一个路由器,因此只有一个 IP 地址。
我尝试在我的 apache 配置文件中使用 VirtualHost,但它无法指定另一台设备上的目录
答案1
您需要为 Apache 设置代理指令才能执行此操作。查看 Apache 上的 ProxyPass 指令模组代理页面了解具体信息。
答案2
我肯定会使用 Nginx 反向代理来做到这一点。
您可以将 nginx 与 apache 服务器放在同一台计算机上,并且可以将其配置为根据 url 将请求重定向到辅助服务器。
在此示例中,apache(之前)已配置为在端口 8080 上提供 example.com 服务,而 edu.example.com 在 xxx100:80 上提供服务
server {
server_name example.com;
# app1 reverse proxy follow
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
server {
server_name edu.example.com;
# app2 reverse proxy settings follow
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://x.x.x.100:80;
}
您可能需要使用访问和错误日志的定义来扩展该示例。
此设置提供的另一个巨大优势是 SSL/TLS 卸载:您可以让 apache 后端提供纯 http 服务,让 nginx 提供启用 SSL/TLS 的 https 服务,这样您就可以在一台服务器中拥有您的证书,这使得您可以更轻松、更整洁地获取证书。维持。