本文内容主要来源于《Apache2 反向代理 本文作者:Moeomu 本文链接:https://www.cnblogs.com/bluedawn/p/Apache-ReverseProxy.html》
快速通道
- 第一步,运行apache模块加载
a2enmod proxy proxy_balancer proxy_http
- 第二步,添加代理VHOST设置
# 配置文件路径 /etc/apache2/sites-enabled/mydomain.com.conf -> ../sites-available/mydomain.com.conf <VirtualHost *:80> ServerName mydomain.com ProxyRequests Off ProxyMaxForwards 100 ProxyPreserveHost On #反代理要解析的ip 支持添加端口 ProxyPass / http://127.0.0.1:90/ ProxyPassReverse / http://127.0.0.1:90/ <Proxy *> Order Deny,Allow Allow from all </Proxy> </VirtualHost>
- 重启apache
service apache2 restart
通过上面的设置,就能将本地端口90的web服务映射到80端口,就可以使用
问题背景
最近搞了一个用Docker搭的青岛OJ, 但是端口与本地的80端口冲突, 不得不将青岛OJ改成其他端口, 这里改成了90, 但是访问这个网站总要在后面加一个端口号总觉得不舒服, 去问了以下Visualdust Akasaki大神, 知道有反代这个东西, 可以用Caddy(似乎说很方便)或者apache进行反代, 我们服务器用的是apache, 所以干脆直接用apache进行反代.
细细道来
官方指南: Reverse Proxy Guide
- 第一步,运行apache模块加载
a2enmod proxy proxy_balancer proxy_http
要使用反代功能, 得启用这些模块, 通过这个命令就可以直接将其启用, 特别方便, 当然还可以和其他博客一样, 手动修改配置文件和移动链接文件来启用功能模块
这里的a2enmod可能是Ubuntu有的指令 - 第二步,添加代理VHOST设置
这里我们的服务是apache2,service, 如果是httpd.service可能和这里的文件路径有所不同, 我看到ArchWiki写的是httpd的, httpd的可以参考以下archwiki# 配置文件路径 /etc/apache2/sites-enabled/mydomain.com.conf -> ../sites-available/mydomain.com.conf # 监听80端口, 就是网站访问的端口, http是80, https是443 <VirtualHost *:80> # 这里是你的域名, 可以是二级域名, 浏览器输入这个域名既可让这个配置文件的反代生效 ServerName mydomain.com # 这几个照抄, 大概就是启用反代的意思吧, 具体可以自己查查 ProxyRequests Off ProxyMaxForwards 100 ProxyPreserveHost On #反代理要解析的ip 支持添加端口 # ProxyPass 浏览器上访问的网站(这里域名根目录了表示反代这个域名所有的链接) 反代到的网站(就是我90端口的OJ Docker) ProxyPass / http://127.0.0.1:90/ ProxyPassReverse / http://127.0.0.1:90/ #下面的也不懂, 照抄 <Proxy *> Order Deny,Allow Allow from all </Proxy> </VirtualHost>
- 重启apache
service apache2 restart
当然也可以用systemctrl
systemctl restart apache2
总结
总之, 和多个域名访问同一个端口的定向很像