找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 8074|回复: 12

[k3] K3梅林使用nginx反向代理内网web服务

[复制链接]
发表于 2019-1-9 10:34 | 显示全部楼层 |阅读模式
本帖最后由 bruce1227 于 2019-1-9 15:05 编辑

    由于我内网有两个NAS,一个4盘位NAS(GEN8)做备份储存,一个两盘位NAS(威联通)做下载用,导致的问题就是,外网访问需要做端口映射,一个web服务就需要用一个端口,这样我就需要记一堆的端口,实在是麻烦,之前用N1刷了个LINUX系统装了NGINX来做反向代理,效果不错,而且申请个证书可以全部用https来进行访问,小绿锁看着很养眼,但是有时候关机了就没法用了,干脆想办法把NGINX丢K3上去!!

需要的东西:
1、刷了梅林系统的K3
2、一个阿里云的域名(Let's Encrypt支持的其他域名也行)
3、外网IP地址(或者可以映射到你路由器的外网端口)


先把这两个软件设置好,不会的话请自己baidu了,有详细介绍,这里就不多描述了。
一个是用阿里云的域名进行DDNS的动态域名解析,一个是用阿里云的域名进行自动的泛域名证书申请的两个插件,这两个插件都是基于阿里云的,你有其他的域名就自己想办法了,达到的目的就是进行动态域名解析和泛域名证书的申请!!
Let's Encrypt自动申请到的证书储存在/koolshare/acme/,且安装在/jffs/ssl目录,后面nginx配置的时候指定到这个目录。

然后开始安装nginx(由于我的K3没有外接存储,所以我的所有操作都是在jffs里面安装的):
1、进入ssh,先来装Entware-ng
  • mkdir /jffs/entware-ng.arm
  • ln -nsf /jffs/entware-ng.arm /tmp/opt
  • wget -O - http://pkg.entware.net/binaries/ ... /entware_install.sh | /bin/sh
  • echo "#!/bin/sh" > /jffs/scripts/services-start
  • echo "sleep 20" >> /jffs/scripts/services-start
  • echo "ln -ns /jffs/entware-ng.arm /tmp/opt" >> /jffs/scripts/services-start
  • echo "/opt/etc/init.d/rc.unslung start" >> /jffs/scripts/services-start
  • echo "#!/bin/sh" > /jffs/scripts/services-stop
  • echo "/opt/etc/init.d/rc.unslung stop" >> /jffs/scripts/services-stop
  • chmod a+rx /jffs/scripts/*

2、安装nginx
  • opkg install nginx



3、配置nginx
登陆ssh用vi修改nginx配置文件

  • vi /opt/etc/nginx/nginx.conf




或者用WinSCP直接去修改也行
一下给出我的的代码 供大家参考


user  nobody;
worker_processes  2;

events {
    use epoll;
    worker_connections  64;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile    on;
    tcp_nopush  on;
    keepalive_timeout   65;

    server {
        listen  8000;  #外网访问端口,如果你的网络可以使用443,那最好就用443
        server_name k3.host.win;   #你访问服务用的域名
        ssl on;
        ssl_certificate /jffs/ssl/cert.pem;   #你的证书存放的位置
        ssl_certificate_key /jffs/ssl/key.pem;     #你的证书存放的位置
        ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
        ssl_prefer_server_ciphers   on;

        location / {
        proxy_buffering off;                                                                                                                                             
        proxy_buffer_size  128k;                                                                                                                                          
        proxy_buffers 100  128k;     
        proxy_redirect off;
        proxy_set_header Host $hostserver_port;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass http://127.0.0.1;    #内网web服务地址
    }
}
    server {
        listen  8000;
        server_name aml.host.win;
        ssl on;
        ssl_certificate /jffs/ssl/cert.pem;
        ssl_certificate_key /jffs/ssl/key.pem;
        ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5;
        ssl_prefer_server_ciphers   on;

        location / {
        proxy_buffering off;                                                                                                                                             
        proxy_buffer_size  128k;                                                                                                                                          
        proxy_buffers 100  128k;                 

        proxy_redirect off;                                                            
        proxy_set_header Host $hostserver_port;                                       
        proxy_set_header X-Real-IP $remote_addr;                                       
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://192.168.3.22;
        }
    }
#后面 你有多少服务 就复制多少个 server 到这里,继续往后添加
}

4、启动nginx

nginx

这里还需要设置运行防火墙
iptables -I INPUT 7 -p tcp --dport 8000 -j ACCEPT

但是随便设置一条端口转发规则都会使你开放的端口失效,要解决这个问题可以建立一个定时脚本,检测 你开放的端口

vim open8000.sh
#!/bin/sh
path=`iptables -nvL | grep 8000 | awk '{print $1}'`
if [ ! -n "$path" ]
then
iptables -I INPUT 7 -p tcp --dport 8000 -j ACCEPT
fi

把这个open8000.sh丢到jffs分区里面去
然后设置一个定时任务,让他每分钟执行一次,检查防火墙是否生效

crontab -e

*/1 * * * * /jffs/open8000.sh #open 8000

这样设置以后 你就可以通过外网用二级域名来访问内网不同的web服务了,只需要用一个端口。




参考文档:
https://www.frost.net.cn/wordpress/archives/654
https://www.right.com.cn/forum/thread-251338-1-1.html











本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1恩山币 +1 收起 理由
crosscc + 1 感谢你的分享,无论怎样,你都是最无私的人!来,说说,你E盘上还有啥一起给我吧!

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
发表于 2019-1-9 10:40 | 显示全部楼层
强大的教程,感谢楼主分享,您辛苦了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-9 15:06 | 显示全部楼层
记录一下 怕以后自己忘记了!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-10 14:07 来自手机 | 显示全部楼层
运营商没有封80 443的话 ,直接listen 80 然后redirect to 443 走https,里边再反代不同的内网ip:port,

另外let`s encrypt证不用非要走阿里,直接用acme.sh 自动申请,自动续期

点评

走阿里的KEY是为了泛域名! 其实这个工具就是用acme.sh 来实现的!  详情 回复 发表于 2019-1-10 15:10
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2019-1-10 15:10 | 显示全部楼层
systemctl 发表于 2019-1-10 14:07
运营商没有封80 443的话 ,直接listen 80 然后redirect to 443 走https,里边再反代不同的内网ip:port,

...

走阿里的KEY是为了泛域名! 其实这个工具就是用acme.sh 来实现的!

点评

通配泛域名是let`s encrypt 支持的 和阿里关系是??  详情 回复 发表于 2019-1-10 16:16
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-10 16:06 | 显示全部楼层
正是需要的东西。学习一下。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-10 16:16 | 显示全部楼层
bruce1227 发表于 2019-1-10 15:10
走阿里的KEY是为了泛域名! 其实这个工具就是用acme.sh 来实现的!

通配泛域名是let`s encrypt 支持的 和阿里关系是??
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-12 09:59 | 显示全部楼层
强大的教程,感谢楼主分享,您辛苦了
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-1-12 12:54 | 显示全部楼层
K3梅林使用nginx反向代理内网web服务 [修改]
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-6-30 14:33 | 显示全部楼层
正在用小钢炮折腾Nginx的我,找教程找到这里了,马上切换大神的方案试试
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-6-30 14:34 | 显示全部楼层
各种Https ssl 弄得眼花缭乱
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2019-6-30 14:55 | 显示全部楼层
没看明白...外部怎么访问?
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2021-1-13 21:44 | 显示全部楼层
加小绿锁,好。。。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-25 10:19

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表