nginx代理请求到内网不同服务器

需求:之前用的是frp做的内网穿透,但是每次电脑断电重启,路由或者端口会冲突,现在使用汉土云盒替换frp。
需要把公网ip映射到任意一台内网服务器上,然后在这台内网服务器上用Nginx做代理即可访问内网其它服务器,如果内网仅一台服务器则不需要代理

需要准备三台云服务器,一台带有公网ip,另外两台不需要公网ip,有内网ip即可,只要这三台的内网ip在同一个网段中。

要在 Ubuntu 上安装 Nginx,可以按照以下步骤进行操作:

1.更新系统软件包列表:

javascript 复制代码
sudo apt update

2.安装 Nginx:

javascript 复制代码
sudo apt install nginx

3.安装完成后,Nginx 服务将会自动启动。可以使用以下命令来检查 Nginx 服务状态

javascript 复制代码
sudo systemctl status nginx

测试:这里使用了两个相同的项目在两台服务器上运行

切换到/etc/nginx/conf.d 创建nginx.conf文件

若使用80端口是需要备案的

javascript 复制代码
server {
	
    listen 81;  // 服务器1        
    server_name test21.zzb97.com;  //有域名的话可以写在这个位置 上面改成80端口

    location / {
        proxy_pass http://192.168.1.12:8092;  // 这里代理的是前端项目 使用该服务器的ip
        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.12:9872/ps_vin/;  // 这里代理的是后端项目 使用该服务器的ip
    }
}

server {
    listen 82; // 服务器2


    location / {
        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配置文件

javascript 复制代码
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

javascript 复制代码
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访问

javascript 复制代码
http://36.150.110.203:82/ps_vin/

效果

相关推荐
南猿北者2 分钟前
Docker Volume
运维·docker·容器
Ztiddler5 小时前
【Linux Shell命令-不定期更新】
linux·运维·服务器·ssh
小小不董5 小时前
Oracle OCP认证考试考点详解082系列16
linux·运维·服务器·数据库·oracle·dba
IPdodo全球网络5 小时前
如何利用静态住宅IP优化Facebook商城的网络稳定性与运营效率
运维·服务器
a1denzzz5 小时前
Linux系统的网络设置
linux·服务器·网络
运维&陈同学6 小时前
【模块一】kubernetes容器编排进阶实战之k8s基础概念
运维·docker·云原生·容器·kubernetes·云计算
40kuai6 小时前
Ingress nginx 公开TCP服务
nginx·ingress
m0_519523106 小时前
Linux——简单认识vim、gcc以及make/Makefile
linux·运维·vim
mit6.8246 小时前
[Docker#4] 镜像仓库 | 部分常用命令
linux·运维·docker·容器·架构
zyp2468107 小时前
Linux之DNS服务器
linux·运维·服务器