能否修改访问URL,通过Apache配置将http://myapp0:port重定向到http://myapp1.ro
可以实现将访问地址替换为http://myapp1.ro,但你当前的Apache配置存在错误,且需要先满足几个前置条件,具体调整方案如下:
前置校验项
- 首先需持有
myapp1.ro域名的合法所有权,将该域名的A/AAAA记录解析到你部署网页的设备的公网IP;如果两台设备均处于内网环境,可在所有需要访问的终端上配置hosts映射,或是通过内网DNS服务完成解析。 - 确认部署网页的设备的80端口未被运营商封禁,且设备防火墙已放通80端口的入站访问规则。
- 确保部署网页的设备可以正常访问
http://myapp0:9999的应用服务。
当前配置的问题
你当前配置中的RewriteRule规则不符合Apache语法规范:RewriteRule仅匹配请求路径部分,不支持直接匹配完整源URL,因此这条规则不会生效。另外ServerAdmin字段规范填写应为管理员邮箱,填写域名不会影响服务运行但不符合配置规范。
正确配置方案
根据你的需求选择对应配置:
方案1:访问http://myapp1.ro直接展示myapp0:9999的应用内容(反向代理,地址栏不变)
首先确认Apache已加载proxy、proxy_http、proxy_html模块,在httpd.conf中先开启对应模块:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_html_module modules/mod_proxy_html.so
然后修改虚拟主机配置为:
<VirtualHost *:80> ServerAdmin admin@myapp1.ro DocumentRoot "${SRVROOT}/htdocs" ServerName myapp1.ro ErrorLog "${SRVROOT}/logs/myapp1.ro-error.log" CustomLog "${SRVROOT}/logs/myapp1.ro-access.log" common ProxyRequests Off # 反向代理所有请求到后端应用 ProxyPass / http://myapp0:9999/ ProxyPassReverse / http://myapp0:9999/ # 自动替换响应内容中包含的原应用域名 ProxyHTMLEnable On ProxyHTMLURLMap http://myapp0:9999/ http://myapp1.ro/ </VirtualHost>
方案2:访问http://myapp0:9999时自动跳转到http://myapp1.ro(重定向,地址栏变更)
虚拟主机配置参考:
<VirtualHost *:9999> ServerName myapp0 RewriteEngine On RewriteRule ^(.*)$ http://myapp1.ro$1 [R=301,L] </VirtualHost> <VirtualHost *:80> ServerAdmin admin@myapp1.ro DocumentRoot "${SRVROOT}/htdocs" ServerName myapp1.ro ErrorLog "${SRVROOT}/logs/myapp1.ro-error.log" CustomLog "${SRVROOT}/logs/myapp1.ro-access.log" common ProxyRequests Off ProxyPass / http://myapp0:9999/ ProxyPassReverse / http://myapp0:9999/ </VirtualHost>
配置修改完成后,重启Apache服务即可生效。
内容的提问来源于stack exchange,提问作者coco
相关产品推荐
相关产品推荐

