需求:之前用的是frp做的内网穿透,但是每次电脑断电重启,路由或者端口会冲突,现在使用汉土云盒替换frp。
需要把公网ip映射到任意一台内网服务器上,然后在这台内网服务器上用Nginx做代理即可访问内网其它服务器,如果内网仅一台服务器则不需要代理
需要准备三台云服务器,一台带有公网ip,另外两台不需要公网ip,有内网ip即可,只要这三台的内网ip在同一个网段中。
要在 Ubuntu 上安装 Nginx,可以按照以下步骤进行操作:
1.更新系统软件包列表:
sudo apt update
2.安装 Nginx:
sudo apt install nginx
3.安装完成后,Nginx 服务将会自动启动。可以使用以下命令来检查 Nginx 服务状态
sudo systemctl status nginx
测试:这里使用了两个相同的项目在两台服务器上运行
切换到/etc/nginx/conf.d 创建nginx.conf文件
若使用80端口是需要备案的
server {listen 81; // 服务器1 server_name test21.zzb97.com; //有域名的话可以写在这个位置 上面改成80端口location / {proxy_pass http://192.168.1.12:8092; // 这里代理的是前端项目 使用该服务器的ipproxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;}location /ps_vin/ {# 反向代理proxy_pass http://192.168.1.12:9872/ps_vin/; // 这里代理的是后端项目 使用该服务器的ip}
}server {listen 82; // 服务器2location / {proxy_pass http://192.168.1.11:8092;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header REMOTE-HOST $remote_addr;}location /ps_vin/ {# 反向代理proxy_pass http://192.168.1.11:9872/ps_vin/;}
}
服务器2的前端项目的nginx配置文件
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {worker_connections 1024;
}
http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;keepalive_timeout 65;server {listen 8080;server_name localhost;location / {alias /app/;index index.html;
# try_files $uri $uri/ /index.html;}error_page 404 /40x.html;location = /40x.html {root /usr/share/nginx/html;}# 后端接口,反向代理location /ps_vin/ {proxy_pass http://36.150.110.203:82/ps_vin/;}}
}
项目的请求url
import axios from "axios";
// import NProgress from 'nprogress'
// import 'nprogress/nprogress.css'
let baseURL = 'http://36.150.110.203:82/ps_vin/'
if(process.env.NODE_ENV == "development") {baseURL = 'http://172.16.10.8:8008/ps/'
}const request = axios.create({baseURL: baseURL,
})
后端可以直接使用下面url访问
http://36.150.110.203:82/ps_vin/
效果