Docker 网络路径的 haproxy 问题
Docker haproxy issue with web path
我正在尝试让 haproxy 使用 localhost/path
连接到网络服务器
我目前的设置如下:
HAproxy_test
│ docker-compose.yml
│
├───haproxy
│ Dockerfile
│ haproxy.cfg
│
└───website
index.php
docker-compose.yml:
version: '3'
services:
website1:
image: php:apache
hostname: website_1
volumes:
- ./website:/var/www/html
ports:
- 8080:80
haproxy:
build: ./haproxy
ports:
- 80:80
depends_on:
- website1
haproxy/Dockerfile:
FROM haproxy
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
haproxy/haproxy.cfg:
global
maxconn 5000
defaults
mode http
timeout connect 5s
timeout client 5s
timeout server 5s
frontend http_in
bind *:80
acl has_web1 path_beg -i /web1
use_backend http_out if has_web1
default_backend http_out
backend http_out
server web1 website1:80 check
使用docker-compose up --build
一切正常。
如果输入 localhost
或 localhost:8080
它会带我到网站,一切都很好但是如果我尝试 localhost/web1
我得到 404 Not Found
但是,如果我更改我的 dockder-compose.yml,例如使用 image: dockercloud/hello-world
而不是 image: php:apache
,那么 localhost/web1
就可以正常工作
我是否遗漏了 dockercloud/hello-world 映像中存在的 apache 中的某些配置?
在我看来,您在 NGINX 中的重定向规则正在运行,但 Apache 服务器正在接收对路径 WWWROOT/web1 的请求,因此 Apache 正在寻找路径 [=12= 中的文件或目录] 这是不存在的,因此给出了 404。您可以通过添加具有基本 index.html 的子目录 web1 来进行测试,并检查它是否得到服务。
我正在尝试让 haproxy 使用 localhost/path
我目前的设置如下:
HAproxy_test
│ docker-compose.yml
│
├───haproxy
│ Dockerfile
│ haproxy.cfg
│
└───website
index.php
docker-compose.yml:
version: '3'
services:
website1:
image: php:apache
hostname: website_1
volumes:
- ./website:/var/www/html
ports:
- 8080:80
haproxy:
build: ./haproxy
ports:
- 80:80
depends_on:
- website1
haproxy/Dockerfile:
FROM haproxy
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
haproxy/haproxy.cfg:
global
maxconn 5000
defaults
mode http
timeout connect 5s
timeout client 5s
timeout server 5s
frontend http_in
bind *:80
acl has_web1 path_beg -i /web1
use_backend http_out if has_web1
default_backend http_out
backend http_out
server web1 website1:80 check
使用docker-compose up --build
一切正常。
如果输入 localhost
或 localhost:8080
它会带我到网站,一切都很好但是如果我尝试 localhost/web1
我得到 404 Not Found
但是,如果我更改我的 dockder-compose.yml,例如使用 image: dockercloud/hello-world
而不是 image: php:apache
,那么 localhost/web1
就可以正常工作
我是否遗漏了 dockercloud/hello-world 映像中存在的 apache 中的某些配置?
在我看来,您在 NGINX 中的重定向规则正在运行,但 Apache 服务器正在接收对路径 WWWROOT/web1 的请求,因此 Apache 正在寻找路径 [=12= 中的文件或目录] 这是不存在的,因此给出了 404。您可以通过添加具有基本 index.html 的子目录 web1 来进行测试,并检查它是否得到服务。