,转载openwrt nginx

ln -s  ../../../feeds/packages/net/fcgiwrap/ fcgiwrap

  

本帖最后由 cjd6568358 于 2018-6-4 11:21 编辑


刚又把路由器重置重新操作了一遍流程,确认无误后整理了教程(
有人问为什么要把uhttpd换成nginx?
1、首先uhttpd运行缓慢
2、也有用lighttpd代替的,速度还可以但是他的反向代理只支持IP不支持域名
3、有想要在路由器上面建站的大多数用的是php,不想同时开启多个web服务器,nginx刚好可以满足我的一切需求
)

使用nginx代替uhttpd

1、禁用uhttpd(防止安装nginx后自动运行出现端口冲突)
/etc/init.d/uhttpd stop
/etc/init.d/uhttpd disable
复制代码

2、安装依赖
opkg install libpcre nginx spawn-fcgi fcgi fcgiwrap
复制代码

注意:nginx默认是不可以直接执行cgi的(luci的运行方式就是cgi),但是可以代理fcgi,所以这里我们需要用fcgiwrap来包装下luci的cgi
fcgiwrap运行依赖spawn-fcgi和fcgi,这两个都可以在对应的安装源找到,但是fcgiwrap官方源貌似没有,需要编译。这里给出源代码地址和编译方式,各位有能力的可以试试
fcgiwrap
在OpenWrt上移植fcgiwrap为nginx提供cgi支持

我用的fcgiwrap版本刚好论坛里有人编译出来了,所以直接用的他的,平台是MT7620,HG255D也可用
PS:这个版本的fcgiwrap整合了shell脚本,所以如果用了这个版本的第四步不需要了,改成修改/etc/init.d/fcgiwrap start_service方法
start_service() {
        echo -e "Starting $NAME ..."
        #procd_set_param command $SPAWN_FCGI -u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -P $PIDFILE -F $FORK_NUM -f $DAEMON
        $SPAWN_FCGI -a 127.0.0.1 -p 9000 -f $DAEMON -F $FORK_NUM
}
复制代码

对应的启动脚本
/etc/init.d/fcgiwrap start
/etc/init.d/fcgiwrap restart
复制代码


3、修改/etc/nginx/nginx.conf
server {
    listen       80;
    server_name  localhost;
    charset UTF-8;
    # access_log  /tmp/access_80.log  main;
    # error_log   /tmp/error_80.log debug;
    autoindex on;
    root   /www;
    location ~* /cgi-bin/luci.* {
        root /www;
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index /cgi-bin/luci;
        
        fastcgi_split_path_info  (/cgi-bin/luci)(.*)$;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}
复制代码


4、启动spawn-fcgi(如需开机自动运行,可将命令添加到/etc/rc.local)
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -f /usr/sbin/fcgiwrap -F 2
复制代码


5、启动nginx
/etc/init.d/nginx enable
/etc/init.d/nginx start
复制代码


6、移除uhttpd
opkg remove uhttpd
复制代码

到了这一步就可以打开浏览器输入192.168.1.1正常访问luci管理页面了