固件版本 iStoreOS 21.02.3 2023042111
内核版本 5.4.188
nginx/1.19.6 (x86_64-pc-linux-gnu)
istoreOS默认采用uhttpd,抛开体积效率不谈,uhttpd有个最大的问题——无法反代。于是乎采用nginx替换uhttp作为web服务器。
网上的教程有不少已经过时了,比如有说nginx不支持cgi的需要如何如何设置的,有说用了nginx之后魔法失效的,有说更改uhttpd端口让它和nginx共存的等等。今天从2024年4月2日开始,此处开启一个船新版本,抛开uhttpd只用nginx。
1. nginx安装
很简单一条命令搞定
opkg update && opkg install luci-nginx luci-ssl-nginx
2. nginx启动
安装完 系统>启动项
里面uhttp应该是已禁用,nginx是已启用的状态了。
此时还要一个操作,本地启动脚本里加入如下2句,否则istoreos一旦重启你就会悲催的发现网页再也打不开了。
nginx
/etc/init.d/nginx restart
踩坑
1.nginx启动时会提示找不到nginx.conf文件
不知道具体原因,猜测是魔改的luci-nginx和nginx兼容性的问题。解决的办法就是随便拷贝一个nginx.conf到/etc/nginx路径下。之后可以在此文件中写配置。
2.nginx的启动log可以在状态>系统日志
中看
有时候会发现监听80,443端口失败导致nginx无法启动。这是因为uhttpd没有关闭导致的。去 系统>启动项
中停止或者杀进程。
3.魔改luci-nginx的配置在/etc/config/nginx中,nginx启动之后会在/etc/nginx下自动生成一个uci.conf。这个默认配置里包含了监听了80,443端口。这就是为什么有些人没有在nginx.conf设定80,443,而日志中却发现nginx去监听了80,443的原因。每次启动uci.conf都会初始化,不改动/etc/config/nginx是没用的!
4.不要手贱删除/etc/nginx/uci.conf.template,这是生成uci.conf的模板文件,删了的话就重装nginx吧
#这是删除命令
opkg list_installed
opkg remove luci-ssl-nginx
opkg remove luci-nginx
opkg remove nginx
5.nginx手动启动命令
#和启动项中添加的一样
nginx
/etc/init.d/nginx restart
最后,建议在配置完nginx之后reboot一下系统,看看能不能正常生效。