要理解什么是 反向代理(reverse proxy) , 自然你得先知道什么是 正向代理(forward proxy).
另外需要说的是, 一般提到反向代理, 通常是指 http 反向代理, 但反向代理的范围可以更大, 比如 tcp 反向代理, 在这里, 不打算讨论 tcp 之类的反向代理, 当文中说到反向代理时, 指的就是 http 反向代理.
正向代理通常直接称为 代理(proxy), 无需强调它是正向的, 在 http 协议中, 代理即指正向代理.
介绍了什么是反向代理, 并与直接访问及(正向)代理进行了对比, 为便于理解, 还举了现实中购物的例子作为比喻
要理解什么是 反向代理(reverse proxy) , 自然你得先知道什么是 正向代理(forward proxy).
另外需要说的是, 一般提到反向代理, 通常是指 http 反向代理, 但反向代理的范围可以更大, 比如 tcp 反向代理, 在这里, 不打算讨论 tcp 之类的反向代理, 当文中说到反向代理时, 指的就是 http 反向代理.
正向代理通常直接称为 代理(proxy), 无需强调它是正向的, 在 http 协议中, 代理即指正向代理.
在云服务器上添加子域名,并配置 apache 将其转发至 8080 端口上的 tomcat server,原域名的访问不变。
情况是这样的,我有一个腾讯云主机,系统为 linux centos,并申请了域名 xiaogd.net,在其上面搭建了一个 wordpress 的站点,使用 apache server,这些目前都 OK。
现在的问题是 wordpress 是用 PHP 语言,之前使用它的经验并不多,相对而言我更熟悉的是 Java 的技术栈,有时想在云上折腾点什么,觉得还是用回 Java 顺手一些。
于是乎,先是在云系统上装上 JRE,再装上 tomcat server,默认在 8080 端口上监听,启动后自然也能通过 8080 端口访问,像这样://www.xiaogd.net:8080。
注意:如果安全组里限制了 8080 端口的访问,则需要放通,这个视具体安全组配置而定。(为安全起见,通常不建议放开太多的端口)
当然,使用 8080 端口看上去总是不那么正规,于是萌生了使用子域名方式来转发的设想,具体规划如下:
访问 //www.xiaogd.net/,则还是原来那样,对应原有的 wordpress 站点。
访问 //exp.xiaogd.net/,则转发至 8080 端口上的 tomcat server。
示意图如下:
那么这里的 “exp.xiaogd.net” 就是一个二级子域名了。
首先需要配置这个二级域名,登录腾讯云管理中心,在“云产品--云解析”相应域名条目下,增加一条 A 记录,主机记录为 exp,还是指向原来的 ip 地址:
这样之后,二级域名就配置好了,大概 10 分钟后就能生效。
当然,此刻去访问 exp.xiaogd.net,则还是去到原来的 wordpress 页面,跟直接访问 xiaogd.net 是一样的。
接下来就要配置转发了。
那么现在需要在 apache server 上做些文章了,简单讲就是将视作为一个前置的反向代理。具体做法是去到 apache 的安装目录下,进入 conf 文件夹,找到 httpd.conf 文件,在该配置文件的最后,改动之前它是这样的:
然后我们在最后再增加一个如下的虚拟主机的记录:
ServerName exp.xiaogd.net ProxyPassMatch ^/(.*)$ http://127.0.0.1:8080/$1
主机名填我们的二级域名,然后转到 127.0.0.1:8080 上。最终效果如下:
重启 apache server 后,再次访问 ,这一次则进入了 tomcat 的欢迎页。Done!
以上就是整个配置的过程,我将其记录下来,有类似需求的同学可以做个参考,希望能有所帮助。我本身对运维这一块的了解也并不多,以上配置参考了网上的一些做法,如果你有更好的想法,或觉得上述过程有任何不妥当之处,欢迎留言讨论,谢谢!