通过Apache反向代理访问本地Gogs服务

场景

在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。

step 1: 配置DNS(可略过)

在DNS服务器上配置git.c4fun.cn解析到我VPS的IP。

step 2: 启用Apache代理模块

1
2
a2enmod proxy
a2enmod proxy_http

step 3: 启动Gogs

启动后可以看到Gogs默认在本机的3000端口上监听。

step 4: 修改Apache配置文件

1
vi /etc/apache2/sites-available/000-default.conf

在文件后添加以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<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>

step 5: 访问

接下来,通过访问git.c4fun.cn,就可以看到gogs的页面了,大功告成。

Gogs页面

文章目录
  1. 1. 场景
  2. 2. 配置
    1. 2.1. step 1: 配置DNS(可略过)
    2. 2.2. step 2: 启用Apache代理模块
    3. 2.3. step 3: 启动Gogs
    4. 2.4. step 4: 修改Apache配置文件
    5. 2.5. step 5: 访问