关键词:
URL转发 / URL显性转发 / URL隐性转发 / URL隐性转发服务器拒绝连接
域名:端口模式如何映射到二级域名
Docker映射端口如何以域名形式访问
项目场景:
在阿里云服务器的Ubuntu系统中,基于Apache2+Docker搭建的服务器,其访问形式为域名:端口模式。
例如:利用Docker搭建的服务器,并将服务器8555端口映射至Docker容器。同时在阿里云上开放8555端口的访问权限。假设服务器域名已经备案,且其地址为www.example.com。
那么访问本次Docker搭建的服务器,其url网址则为www.example.com:8555
问题描述:
在让客户访问某个网站时,我们期望的客户能以产品(二级域名)+主域名的形式访问,这样有利于客户记住网站地址。
很显然,www.example.com:8555这种域名:端口的访问形式非常不利于记忆和传播。为了解决这一尴尬的现象,就需要使用阿里云服务器上的URL转发。
URL转发包括显性转发和隐性转发。
首先,需要管理员在阿里云操控台上,进入域名解析设置页面,添加一个新的解析:
- 记录类型:显性URL转发/隐性URL转发
- 主机记录:product
- 记录值:www.example.com:8555
- 解析线路:默认
- TTL:10分钟
这样设置完成之后,阿里云端的URL转发配置就完成了
- 对于显性URL转发而言:在网址栏输入product.example.com时,将自动跳转进入www.example.com:8555,并在新页面显示的网址为www.example.com:8555。
- 对于隐性URL转发而言:在网址栏输入product.example.com时,同样会进入www.example.com:8555,但是其新页面将会一直保持显示product.example.com。
但URL隐性转发的解析配置完成后,直接访问product.example.com时,会发现服务发生了拒绝连接的现象。
原因分析:
Apache服务器为了防止网站被劫持,一般是不允许进行域名隐性转发的操作。因此,即便在阿里云上设置了隐性URL转发,服务器仍然会返回拒绝连接的情况。
解决方案:
进入Docker镜像中,对Docker内的Apache配置进行更改(注意:不是更改阿里云服务器的Apache配置)
[在阿里云root中操作] docker exec -it [你的容器ID] /bin/bash
[在dockerID容器中操作] vim /etc/apache2/apache2.conf
# 在最后一行添加:
[在apache2.conf文件中操作] Header set X-Frame-Options "allow-from [你的域名]"
如:
[在apache2.conf文件中操作] Header set X-Frame-Options "allow-from http://www.example.com/"
[在apache2.conf文件中操作]保存并退出
[在dockerID容器中操作] /etc/init.d/apache2 restart
[在dockerID容器中操作] 同时按住Ctrl + Q + P退出容器
注意:
让网站能接受URL隐性转发,修改前端文件的meta标签是没有任何效果的。