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

2023-11-19

一、背景

近期部署项目时遇到一个问题,由阿里云解析到一个公网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端口。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx 反向代理到另一个nginx并在另一个ngixn上面做转发 的相关文章

随机推荐