You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
整体架构我以 Windows 服务端和 Windows + Mac 两个客户端为例来说明。而且现在「简悦-同步助手」已经发布了命令行版本,所以服务端部署在 Linux Server 或者 Docker 容器中也都是可以的。
服务端是一台 Windows 电脑,安装「简悦-同步助手」,由于「简悦-同步助手」为了安全起见监听的是 127.0.0.1 的主机名,所以只接受本机的请求,外部请求是不会接受的,因此我们在服务器又搭建了一个 nginx server 反向代理了「简悦-同步助手」的服务,0.0.0.0:80 → 127.0.0.1:7026,因此外部可以通过服务器 IP 加上端口号 80(或者是其他未被占用的合法端口,我选择 80 是因为我通过不同的 server name 做了分流,因此 tcp 端口复用了 80)来访问到服务器上的「简悦-同步助手」。
客户端:
一台 Windows PC,在 Edge 上安装简悦,nginx 反代 127.0.0.1:7026 → 192.168.84.2:80
Mac 上部署 nginx 服务要简单得多,因为 Mac 上比较成熟的包管理工具 Homebrew,Homebrew 也提供了 service 管理的能力,其中包含 nginx service。没有 Homebrew 的同学可以先在 Mac 上安装这个包管理工具,教程跳过这一步,直接安装 nginx 服务:
brew install nginx
短暂的安装过程后会看到一些简短的说明输出:
==> Caveats
Docroot is: /usr/local/var/www
The default port has been setin /usr/local/etc/nginx/nginx.conf to 8080 so that
nginx can run without sudo.
nginx will load all files in /usr/local/etc/nginx/servers/.
To restart nginx after an upgrade:
brew services restart nginx
Or, if you don't want/need a background service you can just run: /usr/local/opt/nginx/bin/nginx -g daemon off;==> Summary🍺 /usr/local/Cellar/nginx/1.23.2: 26 files, 2.2MB==> Running `brew cleanup nginx`...Disable this behaviour by setting HOMEBREW_NO_INSTALL_CLEANUP.Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`).
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
零 前言
我在文章 SSH 端口转发 中介绍了使用端口转发来实现将本地端口转发到远程端口,完成一些网络服务的调试,但是 SSH 毕竟是一个临时的方案,如果我们需要长期把本地的端口的 TCP 请求转发某个远端的服务的话,更好的办法是在本地启动一个反向代理服务,例如 nginx。
一 遇到了什么问题
「简悦」是一款功能强大,自定义程度很高的浏览器阅读模式插件,其主体功能在浏览器扩展端,但是一些高阶的功能依赖桌面端的程序「简悦-同步助手」,以及配合坚果云等文件同步工具实现的跨设备配置同步。「简悦-同步助手」会在本机开启一个
localhost:7026
的服务,扩展端通过这个服务地址完成通信。因此,为了在多个设备上同步使用「简悦」,我不得不在每个设备上都安装扩展端、桌面同步助手和坚果云盘。在 将简悦 · 同步助手部署在远程( SaasS 化 ),方便多个扩展端共用一个同步助手 文章的启发下,我在想是不是可以利用家中的 Windows 服务器,实现部署一套「简悦-同步助手」的服务,其他设备通过 nginx 把
localhost:7026
的请求转发到服务端,简化多端设备的安装复杂度,也减少了同步带来的时差和错误。二 整体架构
整体架构我以 Windows 服务端和 Windows + Mac 两个客户端为例来说明。而且现在「简悦-同步助手」已经发布了命令行版本,所以服务端部署在 Linux Server 或者 Docker 容器中也都是可以的。
服务端是一台 Windows 电脑,安装「简悦-同步助手」,由于「简悦-同步助手」为了安全起见监听的是
127.0.0.1
的主机名,所以只接受本机的请求,外部请求是不会接受的,因此我们在服务器又搭建了一个 nginx server 反向代理了「简悦-同步助手」的服务,0.0.0.0:80
→127.0.0.1:7026
,因此外部可以通过服务器 IP 加上端口号 80(或者是其他未被占用的合法端口,我选择 80 是因为我通过不同的 server name 做了分流,因此 tcp 端口复用了 80)来访问到服务器上的「简悦-同步助手」。客户端:
127.0.0.1:7026
→192.168.84.2:80
127.0.0.1:7026
→192.168.84.2:80
三 部署服务和配置文件
在 Windows 系统上用 NSSM 部署 nginx 服务
nginx for windows 是一个单体可执行文件,可以通过命令行运行,但是没有办法直接作为服务启动,因此需要借助一个小工具 NSSM。
NSSM 全称为:the Non-Sucking Service Manager。NSSM 所采用的方式是把应用安装为一个系统服务,开机自启动;如果需要重启应用,那么重启对应的系统服务就可以了。
首先,下载软件:
分别把压缩包解压缩到以下目录:
C:\Program Files\nginx
C:\Program Files\nssm
nginx 配置
nginx/conf
文件夹下有一个配置文件,nginx.conf
,我们找到server{…}
的部分,在其中添加反向代理的配置即可:配置也不难理解,监听
0.0.0.0:80
服务,并代理转发至localhost:7026
,header 部分保留转发。以系统服务安装启动 nginx
下面我们利用 NSSM 来把 nginx 安装成一个系统服务。双击 nssm.exe 文件可以看到 nssm 的基本用法:
NSSM 的命令手册
NSSM 服务的创建过程是通过命令行启动的,我们在 nssm 目录下启动以管理员身份启动命令行,然后执行
配置 Nginx 系统服务
Nginx 服务的配置比较简单:
保存目录,我们就可以在系统服务中看到 Nginx 已经启动起来了,也可以在系统服务中控制 Nginx 启停等:
在 Mac 系统上通过 Homebrew 部署 nginx 服务
Mac 上部署 nginx 服务要简单得多,因为 Mac 上比较成熟的包管理工具 Homebrew,Homebrew 也提供了 service 管理的能力,其中包含 nginx service。没有 Homebrew 的同学可以先在 Mac 上安装这个包管理工具,教程跳过这一步,直接安装 nginx 服务:
短暂的安装过程后会看到一些简短的说明输出:
这个说明有几个重点的信息:
brew services start/stop/restart nginx
命令来启停 nginx 服务/usr/local/etc/nginx/nginx.conf
,这个配置文件启动了一个localhost:8080
的服务/usr/local/etc/nginx/servers/
目录下的所有配置下面就简单了,在 /usr/local/etc/nginx/servers/ 目录下创建一个 simpread.conf 文件,配置如下:
配置监听
127.0.0.1:7026
服务,并代理转发至192.168.84.2:80
,header 部分保留转发。重启服务即可。四 结语
网络代理部分配置完成之后,我们在 Windows 服务器启动「简悦-同步助手」,客户端的扩展端就可以连接到远程的同步助手了。
Beta Was this translation helpful? Give feedback.
All reactions