1

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条策略。

image.png

image.png

依次添加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的安装与其它的系统安装大同小异,在安装注意两点即可:

  1. nginx安装后的默认端口是80,需要避免与uhttpd冲突。
  2. 在安装选择nginx-all-module以避免某些需要模块支撑的nginx功能不可用。

潘杰
3.1k 声望238 粉丝