找不到 Nginx 404

问题描述

我正在使用 docker compose 运行最新版本的 Nginx,使用我将 Nginx.conf 文件复制到 Nginx docker 容器中的卷

  Nginx:
    image: Nginx:1.20
    container_name: Nginx
    ports:
      - 80:80  
    restart: unless-stopped
    volumes:
      - ./Nginx/Nginx.conf:/etc/Nginx/default.conf
    depends_on:
      - strapi
      - rocketchat
      - keycloak
    networks:
      - test-network

每个应用程序都在同一个网络上运行。

这里是 Nginx.conf 文件

events {
  worker_connections  4096;  ## Default: 1024
}
http {
 server {
   listen 80;

   server_name qa.xxx.com;

   location / {
       proxy_pass http://strapi-container:1337/;
   }

   location /chat {
       proxy_pass http://rocketchat-container:3000;

   }

   location /auth {
       proxy_pass http://keycloak-container:8080;
       proxy_set_header Host $host;
   }
 }
}

我的意图是使用 Nginx 配置运行三个后端 URL /、/chat、/auth。在实例上运行应用程序时,http://ip-address/chat、http://ip-address/auth 似乎不起作用

这里是Nginx日志错误

2021/06/02 07:46:42 [error] 31#31: *1 open() "/usr/share/Nginx/html/chat" Failed (2: No such file or directory),client: 115.96.103.237,server: localhost,request: "GET /chat HTTP/1.1",host: "310.28.67.222"
115.96.103.237 - - [02/Jun/2021:07:46:42 +0000] "GET /chat HTTP/1.1" 404 555 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/88.0.4324.182 Safari/537.36" "-"
2021/06/02 07:46:50 [error] 31#31: *2 open() "/usr/share/Nginx/html/auth" Failed (2: No such file or directory),request: "GET /auth HTTP/1.1",host: "310.28.67.222"
115.96.103.237 - - [02/Jun/2021:07:46:50 +0000] "GET /auth HTTP/1.1" 404 555 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/88.0.4324.182 Safari/537.36" "-"

解决方法

尝试在 proxy_pass 后面添加斜杠,除非您想添加文件夹。

 location /chat {
       proxy_pass http://rocketchat-cnr:3000;
   }

重定向到 http://rocketchat-c​​nr:3000/chat,同时

 location /chat {
       proxy_pass http://rocketchat-cnr:3000/;
   }

重定向到 http://rocketchat-c​​nr:3000/

访问http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass了解更多信息