好吧,我有点不开心了。
在一台计算机上,我有三个用户,分别是user1
、user2
和user3
。每个用户都在运行 syncthing 并分别监听8384
/ 22000
、8385
/22001
和8386
/ 22002
。
我为每个用户设置了一个带有反向代理的 Apache 虚拟主机。虚拟主机文件的内容如下(例如user1
):
<VirtualHost *:80>
ServerName user1.syncthing.mydomain.com
ErrorDocument 404 /404.html
RewriteEngine On
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / "http://localhost:8384/"
ProxyPassReverse / "http://localhost:8384/"
<Proxy *>
Order deny,allow
Allow from localhost
</Proxy>
ErrorLog ${APACHE_LOG_DIR}/user1_syncthing_error.log
CustomLog ${APACHE_LOG_DIR}/user1_syncthing_access.log combined
RewriteCond %{SERVER_NAME} =user1.syncthing.mydomain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
我已经验证 syncthing 正在为每一个用户在正确的端口上运行
$ sudo lsof -i -P -n | grep syncthing | grep LISTEN
syncthing 649 user2 12u IPv6 23903 0t0 TCP *:22001 (LISTEN)
syncthing 649 user2 17u IPv4 19216 0t0 TCP 127.0.0.1:8385 (LISTEN)
syncthing 656 user1 16u IPv6 14254 0t0 TCP *:22000 (LISTEN)
syncthing 656 user1 19u IPv4 23931 0t0 TCP 127.0.0.1:8384 (LISTEN)
syncthing 668 user3 13u IPv6 23921 0t0 TCP *:22002 (LISTEN)
syncthing 668 user3 19u IPv4 18427 0t0 TCP 127.0.0.1:8386 (LISTEN)
此外,尝试连接到user1.syncthing.mydomain.com
,user2.syncthing.mydomain.com
并且user3.syncthing.mydomain.com
从远程计算机都向我发送正确的 IP 地址。
但是!设置是仅有的正在工作user1
!使用 telnet 检查服务器上的连接user2
并user3
告诉我
Trying <correct IP address>
telnet: Unable to connect to remote host: Connection refused
并从远程计算机告诉我(暂停后)
Trying <correct IP address>
telnet: Unable to connect to remote host: No route to host
我也尝试更改虚拟主机文件以user3
匹配user1
,但问题仍然存在。
大约一周前我第一次设置时,这个设置就起作用了,并且文件夹与当时设置的机器的同步仍然有效,我只是在进入配置 GUI 时遇到了麻烦。
我猜想页面的实际服务肯定存在一些问题,我搞错了,但我却苦苦思索如何找出问题所在。
答案1
问题在于我如何进行发夹弯操作 - 我在添加主机条目时错误输入了 IP 地址:user1.syncthing.mydomain.com
指向 192.168.20.12(正确)但user2.syncthing.mydomain.com
两者user3.syncthing.mydomain.com
都指向 192.168.10.12(不正确)。
当我在问题描述中说 telnet 转到正确地址时,我没有注意到10
/20
差异!