问题
我有2台服务器:阿里服务器A的zerotier IP= ip1 、本地服务器主机B的zerotier IP=ip2 、阿里云服务器的公网IP=ip3。我需要在第三台电脑C输入公网IP=ip3:7861/,然后可以看到我在本地服务器B的7860端口的服务,如何实现?
答案
想要通过阿里云服务器A作为跳板,让第三台电脑C通过访问阿里云的公网IP来访问本地服务器B的7860端口服务。这需要在阿里云服务器A上配置端口转发。以下是具体步骤:
- 在阿里云服务器A上配置Nginx反向代理:
# 安装Nginx
sudo apt update
sudo apt install nginx
# 编辑Nginx配置文件
sudo nano /etc/nginx/sites-available/default
# 添加以下配置
server {
listen 7861;
server_name _;
location / {
proxy_pass http://ip2:7860;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# 测试配置文件是否正确
sudo nginx -t
# 重启Nginx
sudo systemctl restart nginx
- 确保阿里云服务器A的安全组放行7861端口
- 确保本地服务器B的7860端口服务正常运行
- 确保两台服务器的Zerotier连接正常
完成以上配置后,第三台电脑C就可以通过访问 http://ip1:7861 来访问本地服务器B的7860端口服务了。
需要注意的几点:
- 确保本地服务器B的7860端口服务允许来自ip1的访问
- 如果有防火墙,需要确保相关端口都已开放
- 可以通过以下命令测试连接:
# 在阿里云服务器A上测试到本地服务器B的连通性
curl http://ip2:7860
阿里云服务器nginx配置
# 保留原有的80端口默认配置
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
try_files $uri $uri/ =404;
}
}
# 添加新的7861端口转发配置
server {
listen 7861;
server_name _;
location / {
proxy_pass http://ip2:7860;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket支持
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
修改步骤:
- 打开配置文件:
sudo nano /etc/nginx/sites-available/default
- 将上述配置复制粘贴到文件中
- 保存文件(在nano编辑器中按Ctrl+X,然后按Y确认保存)
- 测试配置是否正确:
sudo nginx -t
- 如果测试通过,重启Nginx:
sudo systemctl restart nginx
这样配置后,原有的80端口服务不会受影响,同时7861端口会转发到本地服务器的7860端
评论