Apache2 vHost conf - 重定向到不同的服务器
Posted
技术标签:
【中文标题】Apache2 vHost conf - 重定向到不同的服务器【英文标题】:Apache2 vHost conf - redirect to different server 【发布时间】:2018-08-22 04:09:00 【问题描述】:情况
服务器 1:Apache2 从端口 80 为常规网站提供服务
服务器 2:运行从端口 8080 提供的专用 JAVA 网站应用程序(应用程序默认)
使用异地 DNS 服务将我的域名的所有端口 80 请求定向到我的外部 IP。服务器 1 使用多个 vHost 配置文件指向 Apache2 html 文件夹,以便用户看到正确的网站。
问题
通过服务器 1 Apache2 vHost 配置文件将 1 域名定向到服务器 2,而不使用内部 DNS 服务器。
示例
默认网站的服务器 1 vHost 配置文件:
<VirtualHost *:80>
ServerName www.mdom.com
ServerAlias www.mdom.com
DocumentRoot /var/www/html/public_html
<Directory /var/www/html/public_html>
Options -Indexes
AllowOverride All
<IfModule mod_auth_core.c>
Require all granted
</IfModule>
</Directory>
CustomLog /var/log/apache2/www.mdom.com-access.log "Combined"
ErrorLog /var/log/apache2/www.mdom.com-error.log
</VirtualHost>
用于定向到服务器 2 应用程序的服务器 1 vHost 配置文件:
<VirtualHost *:80>
ServerName app.mdom.com
ServerAlias app.mdom.com
DocumentRoot //server2:8080
<Directory //server2:8080>
Options -Indexes
AllowOverride All
<IfModule mod_auth_core.c>
Require all granted
</IfModule>
</Directory>
CustomLog /var/log/apache2/app.mdom.com-access.log "Combined"
ErrorLog /var/log/apache2/app.mdom.com-error.log
</VirtualHost>
注意第二个文件中的//server2
但不知何故,这并没有真正起作用。它显示“禁止”,“您无权访问此服务器上的/”。
请记住,服务器 2 上没有安装 apache2,只要我在 url 中使用端口 8080,JAVA 网站在使用内部 IP 或外部域名通过端口 8080 调用服务器 2 时都可以正常工作。
问题
是否可以指示服务器 1 的 apache2 将app.mdom.com
重定向到服务器 2 的 8080 端口?
TL:DR?我试图做到彻底并提供尽可能多的信息
【问题讨论】:
【参考方案1】:我已经阅读了应用程序的文档,并且在几页代码之间隐藏的某个地方有一小段内容介绍了如何使用 Apache2 设置代理以将该子域的请求路由到服务器 2。
示例
把它放在 Apache2 vHost 配置文件中:
<VirtualHost *:80>
ServerName app.mdom.com
ProxyPass /app http://server2:8080/app
ProxyPassReverse /app http://server2:8080/app
</VirtualHost>
...并激活主机:
a2ensite app.mdom.com.conf
...然后重新配置Apache2来处理代理:
a2enmod proxy
a2enmod proxy_http
经过测试并且有效。
【讨论】:
以上是关于Apache2 vHost conf - 重定向到不同的服务器的主要内容,如果未能解决你的问题,请参考以下文章
无法使用httpd-vhosts.conf从子域重定向到子子域
如何使用 VirtualHost 将 http://example.com 重定向到 apache2.conf 中的 https://example.com