从“目录”反向代理到“服务器不工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从“目录”反向代理到“服务器不工作相关的知识,希望对你有一定的参考价值。

我有一个docker-compose文件,它创建了3个apache容器和一个nginx容器。 apache容器都是具有自己的docker容器的不同应用程序。

我想使用NGINX将代理从根nginx容器URL的目录反向到3个apache实例的主要父代。

在下面的配置位置/工作。 / parts和/ wiki没有。

我已经确认所有3个apache容器都可以通过交换/ location上的proxy_pass来工作,所以我知道问题在于nginx配置。不过我是nginx的新手,我不知道如何解决这个问题。

worker_processes 1;

events { worker_connections 1024; }

http {

  sendfile on;

  upstream docker-apache-php {
      server ths_apache_php:80;
  }

  upstream docker-apache-php-two {
      server ths_apache_php_two:80;
  }

  upstream docker-apache-php-three {
      server ths_apache_php_three:80;
  }

  server {
    listen 8080;

    location / {
        proxy_pass         http://docker-apache-php;
        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;
        proxy_set_header   X-Forwarded-Host $server_name;
    }

    location /parts {
        proxy_pass         http://docker-apache-php-two;
        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;
        proxy_set_header   X-Forwarded-Host $server_name;
    }

    location /wiki {
        proxy_pass         http://docker-apache-php-three;
        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;
        proxy_set_header   X-Forwarded-Host $server_name;
    }
  }
}
答案

我解决了这个问题,显然,proxy_pass上的URL需要以/结尾。现在这也正常,因为我也需要它。

worker_processes 1;

events { worker_connections 1024; }

http {

  sendfile on;

  upstream docker-apache-php {
      server ths_apache_php:80;
  }

  upstream docker-apache-php-two {
      server ths_apache_php_two:80;
  }

  upstream docker-apache-php-three {
      server ths_apache_php_three:80;
  }

  server {
    listen 8080;

    location / {
        proxy_pass         http://docker-apache-php/;
        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;
        proxy_set_header   X-Forwarded-Host $server_name;
    }

    location /parts {
        proxy_pass         http://docker-apache-php-two/;
        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;
        proxy_set_header   X-Forwarded-Host $server_name;
    }

    location /wiki {
        proxy_pass         http://docker-apache-php-three/;
        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;
        proxy_set_header   X-Forwarded-Host $server_name;
    }
  }
}

以上是关于从“目录”反向代理到“服务器不工作的主要内容,如果未能解决你的问题,请参考以下文章

nginx反向代理下载文件失败处理

反向代理负载均衡系列之Haproxy

nginx之TCP反向代理

nginx 反向代理到目录

告诉nginx使用反向代理从节点应用程序中发送文件

nginx介绍 - 反向代理