从 "directory" 反向代理到“服务器不工作
Reverse proxy from "directory" to "server not working
我有一个 docker-compose 文件,它创建了 3 个 apache 容器和一个 NGINX 容器。 Apache 容器是所有不同的应用程序,它们将拥有自己的 docker 容器。
我想使用 NGINX 将代理从根 nginx 容器 URL 的目录反向代理到 3 个 apache 实例的主要父级。
在 location/works 下面的配置中。 /parts 和 /wiki 没有。
我已经确认所有 3 个 apache 容器都可以通过交换 / 位置上的 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;
}
}
}
我有一个 docker-compose 文件,它创建了 3 个 apache 容器和一个 NGINX 容器。 Apache 容器是所有不同的应用程序,它们将拥有自己的 docker 容器。
我想使用 NGINX 将代理从根 nginx 容器 URL 的目录反向代理到 3 个 apache 实例的主要父级。
在 location/works 下面的配置中。 /parts 和 /wiki 没有。
我已经确认所有 3 个 apache 容器都可以通过交换 / 位置上的 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;
}
}
}