nginx 反向代理到另一个nginx并在另一个ngixn上面做转发

一、问题背景

近期部署项目时遇到一个问题,由阿里云解析到一个公网iP,由该公网ip的nginx进行转发。但转发时,该项目为前后端分离,需要解析到远程服务器的xxx目录,这通过一个nginx转发不好解决。通过第一个nginx转发到远程服务器的nginx端口,由远程服务器的nginx进行本地转发即可。

二、解决步骤

1.比如远程服务器内网ip为192.168.10.11,所有请求走公网80端口进来,ip公网服务器的nginx将80的所有请求转发到192.168.10.11:的80端口(nginx端口)。

公网nginx的配置:

upstream config_upstream{
  server 192.168.10.11:80   max_fails=3 fail_timeout=3s weight=10;
}

server {
        listen       80;
        server_name  config.xxxx.com;

          location / {
                        proxy_next_upstream error timeout invalid_header http_500 http_503;
                        proxy_pass  http://config_upstream;
                        proxy_set_header X-Forwarded-Proto https;
                        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_redirect     off;
                        proxy_connect_timeout      300;
                        proxy_send_timeout         300;
                        proxy_read_timeout         300;
                        #proxy_send_lowat          12000;
                        proxy_buffer_size          128k;
                        proxy_buffers              8 64k;
                        proxy_busy_buffers_size    128k;
                        proxy_temp_file_write_size 128k;
                }
    }

2.到远程服务器192.168.10.11上安装nginx进行转发(监听公网过来的80端口请求,根据条件转发到本地的9990端口上面)。

upstream config_upstream{
  server 127.0.0.1:9990   max_fails=3 fail_timeout=3s weight=10;
}

server {
        listen       80;
        server_name  config.xxxx.com;


          location / {
                 root /data2/java/deploy/web/disconf/html;
                 if ($query_string) {
                         expires max;
                 }
            }
          location ~ ^/(api|export) {
                        proxy_next_upstream error timeout invalid_header http_500 http_503;
                        proxy_pass  http://config_upstream;
                        proxy_set_header X-Forwarded-Proto https;
                        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_redirect     off;
                        proxy_connect_timeout      300;
                        proxy_send_timeout         300;
                        proxy_read_timeout         300;
                        #proxy_send_lowat          12000;
                        proxy_buffer_size          128k;
                        proxy_buffers              8 64k;
                        proxy_busy_buffers_size    128k;
                        proxy_temp_file_write_size 128k;
                }
}

三、问题总结

在公网上面的ngixn通过80端口将所有的请求都转到远程服务器内网ip为192.168.10.11的80端口上面,然后192.168.10.11监听80端口后,根据路径判断包含api或者export的话,转发到本地的9990端口。

同一ip(都是80端口)可以绑定无数个域名 配置简单 里面包含一个配置文档:配置文档.doc 看一遍 大部分人都会设置了。 内容如下: NGNIX配置文档 1.解压文件到相应文件夹下(我解压到D:/下) (这里是图片) 目录结构如上 2.在D:\nginx\目录下用记事本新建一个文本文档改名为 proxy.conf。 proxy.conf里面的内容格式如下: server { listen 80; server_name www.*****.com; location / { proxy_pass http://192.168.45.1:8045; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } (完整拷贝上面的内容server_name www.*****.com; 这里面的域名即是来访域名 proxy_pass http://192.168.45.1:8045; 这里面的域名(http://192.168.45.1:8045)即是内部跳转的地址,将该内容拷贝多份实现不同来访域名的跳转) 如下: 3.找到D:\nginx\conf下nginx.conf文件用记事本打开 在文段末尾大括号前加上 include proxy.conf;(就是加载刚刚新建的那个文件(注意路径)) 4.进入cmd 进入D盘: d: 进到nginx文件夹下:cd nginx 启动nginx.exe:start nginx Cmd窗口会闪一下 进程里面会多了个 浏览器里面输入:http://127.0.0.1 将出现: Nginx的欢迎界面。 注: nginx -s stop // 停止nginx nginx -s reload // 重新加载配置文件 nginx -s quit // 退出nginx nginx-1.3.9.zip(这个版本) (1分钟搞定只是夸张说法啦,给你增加信心的啦,真正的操作起来,因人而异,没搞定的耐心再试试,自己xp系统亲测成功,不喜欢的无拍砖哦,实在搞不定的加我qq852208555 一起研究下 谢谢!)
要将请求从一个 Nginx 完整转发到另一个 Nginx,可以使用 Nginx反向代理功能来实现。具体步骤如下: 1. 在第一个 Nginx 上配置反向代理,将请求转发到第二个 Nginx 上。示例配置如下: ``` server { listen 80; server_name example.com; location / { proxy_pass http://second_nginx_ip:second_nginx_port; 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_pass 指令指定了第二个 Nginx 的地址和端口号,这里使用了 second_nginx_ip 和 second_nginx_port 作为示例;proxy_set_header 指令用于设置转发请求时需要传递的头信息,例如 Host、X-Real-IP 和 X-Forwarded-For 等。 2. 在第二个 Nginx 上配置反向代理,将请求转发到后端应用上。示例配置如下: ``` server { listen 80; server_name example.com; location / { proxy_pass http://backend_server_ip:backend_server_port; 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_pass 指令指定了后端应用的地址和端口号,这里使用了 backend_server_ip 和 backend_server_port 作为示例;proxy_set_header 指令用于设置转发请求时需要传递的头信息,例如 Host、X-Real-IP 和 X-Forwarded-For 等。 这个配置将会把所有的请求都转发到后端应用上,而且两个 Nginx 之间的请求转发是完整的。你可以根据实际情况修改这个配置,以满足你的需求。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bst@微胖子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值