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设置已经完成。