首页 > 解决方案 > NGINX Reverseproxy 问题:在 ReverseProxy 后面发布 Web 应用

问题描述

我有一个“小”NGinx 问题。

我有多个 Web 应用程序,我将通过 NGINX Reverseproxy 发布它。

在 1 个 URL 下,我将发布多个 Webapp:

所以:

https://Reverseproxy/webappA
https://Reverseproxy/webappB
https://Reverseproxy/webappC

这项工作是这样的:

https://Reverseproxy/webappA --> redirect to http://www.webappaWebserver.com/webappA

--> 当然这很好用;-)。

但是对于我的 Webapp B,我遇到了挑战。我必须找到一种方法来实现以下场景:

https://Reverseproxy/webappB --> redirect to http://www.webappBWebserver.com/

--> 这不起作用,因为子站点(斜线之后)不存在。但我无法在此 Web 服务器上进行 URL Webserverchanges。

那么我怎样才能让这个星座运行呢?

这是我的 Reverseproxy 配置:

  location /appb {
    proxy_pass              http://10.254.1.41:80;
    include                /etc/nginx/conf.d/proxy.conf;
  }

代理.conf:

proxy_http_version                 1.1;
proxy_cache_bypass                 $http_upgrade;

### Proxy headers
proxy_set_header Upgrade           $http_upgrade;
proxy_set_header Connection        $connection_upgrade;
proxy_set_header Host              $host;
proxy_set_header X-Real-IP         $remote_addr;
proxy_set_header Forwarded         $proxy_add_forwarded;
proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host  $host;
proxy_set_header X-Forwarded-Port  $server_port;

### Proxy timeouts
proxy_connect_timeout              60s;
proxy_send_timeout                 60s;
proxy_read_timeout                 60s;
~

非常感谢您的帮助。

标签: nginxnginx-reverse-proxy

解决方案


  • 将 page_name 替换为 webappA、webappB 或 webappC 。

  • 将 example.com 替换为您的子域。

      location /page_name/ { 
                      rewrite ^([^.]*[^/])$ $1/ permanent;
                      sub_filter_once off;
                      sub_filter_types *;
                      sub_filter /_elderjs /page_name/_elderjs;
                      proxy_ssl_verify off;
                      proxy_set_header Host "example.com";
                      proxy_set_header X-Forwarded-Host "";
                      proxy_set_header X-Forwarded-For "";
                      proxy_set_header Accept-Encoding "";
                      proxy_set_header Cookie "";
                      proxy_ssl_server_name on;
                      proxy_pass https://example.com/;
                      proxy_redirect ~^(http://[^/]+)(/.*)$ https://$http_host$2;
       }
    

它对我有用;)。希望这个答案能解决你的问题。


推荐阅读