OpenWrt-nginx反向代理LuCI

LuCI默认使用uHTTP作为web server。作为路由器管理工具,uHTTP已经足以,但为什么还要用nginx反向代理呢?这就引出两个问题:

一、为什么用nginx?

nginx是一个高性能的HTTP Server和反向代理软件,要比uHTTP强大许多。至于我为什么选择nginx的原因,主要是因为后期安装的一些软件需要用到一个HTTP Server,而nginx是一个非常不错的选择。

二、为什么反向代理?

既然选择了nginx,为什么不直接作为LuCI的HTTP Server呢?是因为LuCI用lua作为CGI(Common Gateway Interface,通用网关接口),而nginx不支持plain CGI,要通过用FastCGI、FCGI Wrap、uWSGI等服务去代理。

那为什么不选择安装CGI服务,还要反向代理呢?因为我在OpenWrt的软件仓库中没有找到以上几个CGI服务。虽然OpenWrt软件仓库提供了两个名为luci-nginx和luci-nginx-ssl的软件,但是都因为无法满足包nginx-mod-luci的依赖,而无法安装。后期要是有机会,我将编译一个uWSGI,用nginx完全替换uHTTP。

安装nginx

切入正题,首先我们需要安装nginx。安装方式有两种,一个是通过LuCI的软件管理,另一个就是通过opkg安装。考虑到nginx的配置等问题,果断选择SSH登陆到路由器,用opkg安装。

ssh root@openwrt opkg update opkg install nginx

配置nginx和uHTTP

安装完成后,需要配置nginx和uHTTP。

首先要解决端口冲突,因为nginx和uHTTP都在监听80端口,要将uHTTP的监听端口替换成8080。

uci set uhttpd.main.listen_http=0.0.0.0:8080 uci commit uhttpd

然后开始设置nginx,用vim打开nginx配置文件进行修改。

vim /etc/nginx/nginx.conf

修改后的nginx配置文件如下:

nginx.conf

完成配置后,重启uHTTP和nginx。

service uhttpd reload service nginx reload

重启服务完成后查看网络请求Headers确定配置成功。

收到302

收到200

至此nginx反向代理LuCI设置已经完成。