apache配置proxy代理

近日想用apache部署beego的web站点,把配置过程、遇到的问题和解决方法记录一下。

1. 配置站点及反向代理

假设站点名叫demo,服务器为ubuntu linux。执行sudo vim /etc/apache2/sites-available/demo,贴入以下内容,保存。

<VirtualHost *:80>  
    ServerAdmin webmaster@dummy-host.example.com
    ServerName demo.sudodev.cn
    ProxyRequests Off
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

2. 启用站点

执行a2ensite demo

3. 启用反向代理apache模块

执行a2enmod proxy

4. 重启apache服务

执行sudo service apache2 restart

5. 验证访问

首先确认映射的站点域名(我这里是demo.sudodev.cn)已经成功映射到服务器。然后在浏览器中输入http://demo.sudodev.cn

6. 出现报错信息

浏览器中显示500错误信息:

Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request.Please contact the server administrator...

7. 定位错误原因及解决

出现错误,一般查看日志文件。执行 tail -f /var/log/apache2/error.log,查看到最近的错误信息:

...[warn] proxy: No protocol handler was valid for the URL /favicon.ico. If you are using a DSO version of mod_proxy, make sure the proxy submodules are included in the configuration using LoadModule

目测是相关的模块没有启用。谷歌之,找到解决办法,将prox_http模块启用即可:执行a2enmod proxy_http后,重启apache服务即可。