KoolShare

 找回密码
 立即注册
搜索
查看: 208|回复: 3

QNAP docker安装nginx实现免端口访问

[复制链接]

19

主题

259

帖子

1008

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
890
魔法值
0
注册时间
2015-11-2
发表于 2020-1-1 19:50:32 | 显示全部楼层 |阅读模式
本帖最后由 缺牙老狼 于 2020-1-1 20:08 编辑

最近折腾了一通,很费劲。技术小白要弄点东西就是这么难。
百度谷歌了一堆,都是些技术达人,关键时候总是一句带过。问题就是,很多你们一句带过的我们实在看不懂……
废话少说吧,我简单说说。
1.自己有动态公网IP,通过电信投诉获得。
2.在freenom注册了一个域名,用cloudflare解析。以下用abc.com举例。
3.用梅林固件软件中心的CFDDNS,实现DDNS。
4.软件中心Let's Encrypt注册个证书,实现HTTPS访问。

这几步很简单很直白,网上很多教程,论坛也有。我试过DNSPOD、GODADDY等等DDNS,软件中心的都有问题用不了,按照各种设置各种一顿操作猛如虎回头还是不行,搞不懂,放弃,就用cloudflare吧。

4.QNAP上搭建了wordpress博客、jellyfin视频站、aria2等等。加上自己做了个主页,再加上路由器管理页面,NAS管理页面。这一堆,全部都是带端口访问。
类似这样:
http://abc.com:8888
https://abc.com:9999
实在不美观,不好记。
想通过nginx来反向代理子域名。实现如下效果:
jellyfin视频站现在地址:http://abc.com:8888,反向代理后https://video.abc.com
nas管理页面现在地址:http://abc.com:8988,反向代理后https://nas.abc.com
路由器管理页面现在地址:http://abc.com:8900,反向代理后https://router.abc.com
…………
诸如此类。
提醒一下,如果你的80和443端口全部都封闭了,就不要试了……我的443还活着。具体可以打开这个http://tool.chinaz.com/port   ,输入你的公网IP,然后分别测试80和443是否打开。

理想很丰满,现实……
5.梅林是可以安装nginx的,但是总是各种出错。
6.QNAP也可以安装,为了避免影响系统,我选择了用docker安装,也就是container station
安装的是官方的nginx,就是点创建后,搜索nginx,唯一的一个“推荐”,版本是1.14
顺利安装。然后,傻眼了。网上关于docker安装的,全都是基于原版的docker而不是container station,他们都是命令行操作的,实在是傻眼。

7.后来想了想。用winscp进去,到处找安装的位置,我连这个都不知道……我把找到的地址和大家说一下吧,总有人是不知道的。知道的当我没说。
/share/CACHEDEV3_DATA/Container/container-station-data/lib/docker/overlay2/2f169498b0944357b9c329b0b2bf7d95e57559c174c710475457efc918c70ff/diff/etc/nginx/conf.d
参考这个路径就可以找到conf.d这个文件夹,里面有个文件default.conf,右键编辑。代码如下:
8.对了,记得把你申请的证书和key复制到这个文件夹
/share/CACHEDEV3_DATA/Container/container-station-data/lib/docker/overlay2/2f169498b0944357b9c329b0b2bf7d95e57559c174c710475457efc918c70ff/diff/etc/ssl/certs
9.一下这段代码,#以及之后的内容删除,按内容说明改为你的。
  1. server {
  2.     listen       443 ssl;
  3.     server_name  nas.abc.com;   # abc.com是你的域名,nas.abc.com是子域名,用于访问自己的nas管理页面,参考设置即可
  4.     ssl_certificate /etc/ssl/certs/fullchain.cer; # fullchain.cer是你的证书名字。
  5.     ssl_certificate_key /etc/ssl/certs/abc.com.key;# abc.com.key是你证书的key
  6.     ssl_session_timeout 5m;
  7.     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  8.     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  9.     ssl_prefer_server_ciphers on;
  10.    
  11.     location / {
  12.              proxy_redirect off;
  13.         proxy_set_header Host $host;
  14.         proxy_set_header X-Real-IP $remote_addr;
  15.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  16.         proxy_pass   https://192.168.1.100:8443; # https://192.168.1.100:8443是你的nas管理页面内网可以访问的地址
  17.         }

  18. }
复制代码
10.记得在梅林上把aicloud占用的443端口改成别的,就可以把443端口释放出来了。然后梅林上端口转发,把443转发到你nas的地址上的443端口11.然后重启nginx的containers
12.就可以通过https://nas.abc.com来访问你的nas管理页面了。
13.其他页面一样的代码复制一段照着改。

评分

1

查看全部评分

看什么看,没有签名,就是没有签名。

1

主题

39

帖子

107

积分

初级魔法师

Rank: 2

精华
0
门户文章
0
魔力币
101
魔法值
0
注册时间
2017-3-9
发表于 2020-1-2 10:44:53 | 显示全部楼层
请问,docker里面的nginx怎样代理,宿主机同一内网的其他主机服务,谢谢

19

主题

259

帖子

1008

积分

大魔法师

Rank: 5Rank: 5

精华
0
门户文章
0
魔力币
890
魔法值
0
注册时间
2015-11-2
 楼主| 发表于 2020-1-3 09:31:28 | 显示全部楼层
chenbaker 发表于 2020-1-2 10:44
请问,docker里面的nginx怎样代理,宿主机同一内网的其他主机服务,谢谢

记得在梅林上把aicloud占用的443端口改成别的,就可以把443端口释放出来了。然后梅林上端口转发,把443转发到你nas的地址上的443端口

就是路由器把443端口转发到docker宿主机的443端口,然后nginx监听443端口
假如你的其他服务的端口是8888.平时外网通过aaa.com:8888和内网通过192.168.1.155:8888访问。
你的域名解析是通过路由器插件,把aaa.com解析到你的动态公网IP的。在解析网站上是一条A记录,比如:aaa.com→111.111.111.111
你在解析网站加一条别名记录(CNAME),把你想要的子域名解析到你的域名上,例如:video.aaa.com→aaa.com

然后你按我上面的代码。把video.aaa.com反向代理到192.168.1.155:8888

就可以通过video.aaa.com来访问了、
看什么看,没有签名,就是没有签名。

19

主题

263

帖子

703

积分

高级魔法师

Rank: 4

精华
0
门户文章
0
魔力币
599
魔法值
0
注册时间
2017-3-29
发表于 2020-1-9 13:48:50 | 显示全部楼层
成都电信443也被封了真是操蛋

联系我们|手机版|KoolShare ( 沪ICP备13045430号962110 沪公网备31010402005377

GMT+8, 2020-1-21 03:02 , Processed in 0.072437 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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