在VPS上安装了Gogs作为版本控制软件,但是Gogs使用了内置的Http服务器在3000端口上监听,但是我又不希望在输入域名之后跟上端口号,能想到的方案就只有通过配置Apache作为反向代理访问Gogs来实现。
所谓反向代理,就是使用一台WEB服务器作为另一台WEB服务器的代理,用户访问外部的WEB服务器,而实际上的请求处理由内部服务器完成。通过反向代理,可以起到隐藏内部服务器以及负载均衡等作用。
以下以该场景为例,展示如何配置Apache作为反向代理,目的是通过访问git.c4fun.cn访问127.0.0.1:3000。其它的场景可以此为例稍加修改即可。
环境为Ubuntu 14.04, Apache 2.4.7。
在DNS服务器上配置git.c4fun.cn解析到我VPS的IP。
a2enmod proxy
a2enmod proxy_http
启动后可以看到Gogs默认在本机的3000端口上监听。
vi /etc/apache2/sites-available/000-default.conf
在文件后添加以下内容
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerAlias git.c4fun.cn
ProxyPreserveHost On
ProxyRequests Off
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>