openwrt是一个小的liunx操作系统,所以nginx也同样是适用的,本文阐述一种在openwrt上安装nginx的方法。
uhttpd
openwrt提供了web端便于用户管理,所以本身就必然存在http服务,而端口恰恰也是常用的80及443。nginx的默认安装端口也是这两个,为了减少一些不必要的麻烦,我先将uhttpd的端口修改为:800及3443.
# vi /etc/config/uhttpd
# HTTP listen addresses, multiple allowed
list listen_http 0.0.0.0:800
list listen_http [::]:800
# HTTPS listen addresses, multiple allowed
list listen_https 0.0.0.0:3443
list listen_https [::]:3443
保存,然后执行:
# service uhttpd restart
重启uhttpd
此时,便需要通过800及3443访问openwrt了。
安装nginx
# opkg update
# opkg install nginx-all-module
# opkg install nginx-ssl
安装完成后,执行nginx -t
来检测是否安装成功:
root@OpenWrt:/etc# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
端口号
nginx默认服监听到80端口,我们先将其修改为其它端口,比如:81
# vi /etc/nginx/nginx.conf
将其中的 80 改成 81,同是将server变更为openwrt的lan地址:
server {
listen 81;
server_name 192.168.20.1;
保存后执行nginx -t
测试,没有问题的话执行nginx
来启动nginx服务。
此时我们在局域网主机中访问http://192.168.20.1:81/
便可以成功的发现nginx的身影了。
设置防火墙策略
然后我想把nginx
服务于801
端口用于转发http
请求,同时服务于3366
端口转发数据库请求,2222
端口转发ssh
请求,则首先需要在防火墙中增加3条策略。
依次添加3条规则后,点保存并应用。
然后配置两个流转发:
stream {
upstream db {
server 192.168.11.10:3633;
}
server {
listen 3366;
proxy_pass db;
}
upstream ssh {
server 192.168.11.10:22;
}
server {
listen 2222;
proxy_pass db;
}
}
保存后执行:nginx -t
以及 nginx -s reload
。
总结
openwrt上nginx的安装与其它的系统安装大同小异,在安装注意两点即可:
nginx
安装后的默认端口是80,需要避免与uhttpd
冲突。- 在安装选择
nginx-all-module
以避免某些需要模块支撑的nginx功能不可用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。