gpt4 book ai didi

docker - Nginx与docker,找不到与斜杠不同的位置

转载 作者:行者123 更新时间:2023-12-02 19:50:09 26 4
gpt4 key购买 nike

概要

我创建了这个简单的示例,以更正和检查在另一个更复杂的项目中出现的错误。
所以我有一个包含1个Web服务器和2个应用程序的docker-compose文件和一个nginx conf文件。

请注意,我正在使用Docker快速入门终端针对Windows 10 Home Edition进行测试,但即使在Ubuntu 18.04上也进行了测试,结果是相同的。

结果

前往:http://192.168.99.100:8080/
默认输出:

It works!



此处唯一的问题是app2,因为 我无法访问app2

转到 http://192.168.99.100:8080/app2
错误:

Not Found

The requested URL was not found on this server.



我不明白为什么我不能这样做,错误在哪里。

我尝试过的
  • 切换位置顺序,因此location /app2location /之后,但
  • 没有改变
  • location /app2的位置更改为location /foo,即使此处结果相同。
  • 更改与上一个示例相关的路径,与location /不同的任何内容均不起作用。 (例如location /bar location /foobar location /test)
  • 更改location /以便引用app2而不是app1,它可以工作,但是以这种方式我无法到达app1。

    location / {
    proxy_pass http://app2:80;
    }



    location /app1 {
    proxy_pass http://app1:80;
    }



  • docker-compose.yml
    version: "3.7"

    services:
    web:
    image: nginx:alpine
    volumes:
    - ./nginx.conf:/etc/nginx/nginx.conf
    ports:
    - 8080:80
    networks:
    - app1_net
    - app2_net

    app1:
    image: httpd:latest
    networks:
    - app1_net

    app2:
    image: httpd:latest
    networks:
    - app2_net

    networks:
    app1_net:
    app2_net:
    nginx.conf
    events {}
    http {
    server{
    listen 80;
    listen [::]:80;

    server_name localhost;

    location /app2 {
    proxy_pass http://app2:80;
    }

    location / {
    proxy_pass http://app1:80;
    }
    }
    }

    最佳答案

    这是正确的方法,请使用正则表达式来允许子文件夹导航以及/ app2上的完美匹配来重定向http://app2上的流量:

    location ~ ^/app2/(.*)$ {
    proxy_pass http://app2/$1;
    }
    location = /app2 {
    proxy_pass http://app2/;
    }
    location / {
    proxy_pass http://app1;
    }

    关于docker - Nginx与docker,找不到与斜杠不同的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61190029/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com