【NAS-群辉玩机之旅-nginx】使用反向代理实现多域名访问不同应用,规避IP+端口访问
学海无涯
2018年11月19日 21:17
收录于文集
共7篇


前一段时间有一位粉丝问我如何实现IP/dms访问ip:5000,IP/photo访问图片服务,当时答应他要做一个教程,但是最近工作太忙一直,没有时间做,再次先说一声对不起。

好了废话不多说,现在就开始教程(本来还想录一个视频的,但是时间来不及,之后补一个)


Docker安装nginx反向代理到相应地址

一、更改设置释放群晖NAS的80端口

要实现IP+目录直接访问相应服务首先要把群晖的80端口释放出来,在群晖NAS上这确实是个很棘手的问题,因为群晖web UI的Nginx服务程序把80端口给霸占了。你即使想把Docker-nginx端口设置成80,你也无法设置。我们可以把群晖自带Nginx原来的80端口替换为8080,这样就可以释放出80端口给Docker使用了。所以为了安装Docker-nginx,我们先来把群晖NAS的Nginx的80端口给释放出来,我决定用8080端口替换80。

1、首先用你Windows电脑上的putty软件通过ssh方式登录进你的群晖NAS。输入你的群晖IP保持port 22,点open就可输入账户和你群晖的密码按回车以ssh进入群晖NAS了。

putty下载地址 https://www.lanzous.com/i2eqaxa 密码:8888

登录群辉

登录群晖

切换到root账户

2、切换路径。输入 cd /usr/syno/share/nginx 切换到nginx文件夹,然后在输入ls,即可看到nginx下的文件了。尤其注意我划线的三个文件:server.mustache、DSM.mustache和WWWService.mustache。待会我们要修改的就是这个三个文件。

找到要修改的文件

3、用VI修改80端口为你想替换的端口

之前在树莓派上都是用nano编辑,但是群晖NAS默认应该没安装nano,只能用VIM编辑器修改文件了。VIM有点难用,建议操作前上网搜索学习一下VIM的使用方法。输入vi server.mustache,即可打开server.mustache。按下按键i进入插入模式,用方向键移动光标找到80,然后在后面输入80,使原来的80变成8080。然后按ESC退出编辑模式,输入:wq保存并退出。用同样的方法修改剩下的DSM.mustache和WWWService.mustache。

替换端口

4、在设置界面设置保存,自动重启生效。

设置完去DSM随便点个无关紧要的设置,然后点应用即可使nginx重启生效。现在你的群晖NAS的80端口就自由了。

二、用docker在群晖NAS上安装nginx

1、搜索下载nginx

搜索nginx

2、设置启动nginx容器

启动

高级设置

设置自动启动

本地端口设置为80

点击确定后,然后下一步、应用,则可启动nginx容器

三、设置反向代理

1、进入容器详情

启动控制台1

2、然后选择终端机

如果没有显示图中情况,可以新增一个终端

3、查找nginx.conf文件的目录

输入nginx -t

返回结果包含配置文件目录

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

其中/etc/nginx/nginx.conf即为目录位置

4、编辑nginx.conf文件

输入vi /etc/nginx/nginx.conf

然后点击i

修改配置文件为

server {         listen 80;          #demo.domain.com为你的访问域名,如果不限制域名,请设置为下划线         server_name demo.domain.com;           #通过访问dms二级目录来访问群晖原5000端口内容 location /dms/ {             #后面的斜杠是一个关键,没有斜杠的话就会传递dms到后端节点导致404             proxy_pass      http://你的群晖ip:5000/;             proxy_redirect  off;             proxy_set_header Host $host;             proxy_set_header X-Real-IP $remote_addr;             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         }         #通过访问photo二级目录来访问群晖原相册内容 location /photo/ {             #后面的斜杠是一个关键,没有斜杠的话就会传递photo到后端节点导致404             proxy_pass      http://你的群晖ip/photo/;             proxy_redirect  off;             proxy_set_header Host $host;             proxy_set_header X-Real-IP $remote_addr;             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;         }         #其他路径默认访问前台网站         location / {             proxy_pass http://你的群晖ip:5000;             proxy_redirect  off;             proxy_set_header  Host  $host;             proxy_set_header  X-Real-IP  $remote_addr;             proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;         }     }

然后按ESC退出编辑模式,输入:wq保存并退出

最后重启容器就可以使用群晖IP/dms访问群辉IP:5000了

其实还有一个方案,直接修改群晖的nginx达到多目录访问不同服务的目的,但是我不推荐,毕竟群晖多是拿来储存文件的,数据最重要,修改了不稳定,如果想要修改,本篇文中已经提示了修改位置了,就是群晖的那几个nginx文件,修改方法和上面/etc/nginx/nginx.conf这个文件一样,如果还有不懂的,欢迎留言。(我也想把这个方案写下来,奈何没有这么多时间,还得上班赚钱)

下一篇文章估计会写如何使用二级域名访问不同的服务,这个比较简单。