Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Nginx反向代理到docker服务返回403_Reactjs_Docker_Nginx_Reverse Proxy - Fatal编程技术网

Reactjs Nginx反向代理到docker服务返回403

Reactjs Nginx反向代理到docker服务返回403,reactjs,docker,nginx,reverse-proxy,Reactjs,Docker,Nginx,Reverse Proxy,我的nginx+docker+react+java后端有问题。让我解释一下: 我有一台机器,我在那里写了两篇docker文章 第一个是前端,它只是nginx中带有SSL的react构建。 第二个是后端,它是一个运行在8080端口的jetty,没有SSL 这是前面的docker compose: version: "3.3" services: app: container_name: frontend image: frontend:latest

我的nginx+docker+react+java后端有问题。让我解释一下:

我有一台机器,我在那里写了两篇docker文章

第一个是前端,它只是nginx中带有SSL的react构建。 第二个是后端,它是一个运行在8080端口的jetty,没有SSL

这是前面的docker compose:

version: "3.3"
services:
  app:
    container_name: frontend
    image: frontend:latest
    ports:
      - 80:80
      - 443:443
    restart: always
    volumes:
      - nginx-letsencrypt:/etc/letsencrypt
    labels:
      - com.centurylinklabs.watchtower.enable=true
    networks:
      net:
  watchtower:
    container_name: watchtower_frontend
    image: v2tec/watchtower
    environment:
        - REPO_USER=${DOCKER_USER}
        - REPO_PASS=${DOCKER_PASS}
    volumes:
        - /var/run/docker.sock:/var/run/docker.sock
    restart: always
    command: --cleanup --label-enable --interval 30
volumes:
  nginx-letsencrypt:
networks:
  net:
    driver: bridge
使用此nginx配置

  map $http_upgrade $connection_upgrade {
      default upgrade;
      ''      close;
    }
  
  server {
    server_name www.web.me;
    return 301 $scheme://web.me$request_uri;
  }
  
  server {
    listen 80;
    server_name web.me;
    return 301 https://web.me$request_uri;
  }

   server {

    listen 443 ssl;
    server_name web.me;
    
    ssl_certificate /etc/letsencrypt/live/web.me/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/web.me/privkey.pem;

    access_log /var/log/nginx/data-access.log combined;
    error_log /var/log/nginx/error.log debug;

    location /api {
       error_log    /var/log/nginx/error.log debug;
       proxy_pass http://backend:8080;
       rewrite ^/backend(.*)$ $1 break;
    }

    location / {
      root  /usr/share/nginx/html;
      index  index.html index.htm;
      try_files $uri $uri/ /index.html;
    }

}
这是后端docker组件

version: '3'
services:
  mongo:
    image: mongo:latest
    container_name: mongo
    restart: always
    networks:
      fontend_net:
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME}  #Github
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD}  #Github
      MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE} #Github
      MONGO_USER: ${MONGO_USER} #Github
      MONGO_PASSWORD: ${MONGO_PASSWORD} #Github
    volumes:
      - ./mongo/mongod.conf:/etc/mongod.conf
      - ./mongo/docker-entrypoint-initdb.d/mongo-init-user.sh:/docker-entrypoint-initdb.d/mongo-init-user.sh
      - /data/db/:/data/db/
      - /data/log/:/var/log/mongodb/
    ports:
      - "27017:27017"
  prometheus:
    image: quay.io/prometheus/prometheus:latest
    container_name: prometheus
    ports:
      - 9090:9090
    volumes:
      - "./prometheus.yml:/etc/prometheus/prometheus.yml"
    networks:
      frontend_net:
    depends_on:
      - service
  service:
    image: backend:latest
    container_name: backend
    depends_on:
      - mongo
    links:
      - mongo
    labels:
      - com.centurylinklabs.watchtower.enable=true
    environment:
      ENV: prod
      DB_USER: ${MONGO_USER} 
      DB_PASS: ${MONGO_PASSWORD} 
      DB_DB: ${MONGO_INITDB_DATABASE}
    ports:
      - 8080:8080
    restart: always
    networks:
      frontend_net:
  watchtower:
    container_name: watchtower_backend
    image: v2tec/watchtower
    network_mode: host
    environment:
      - REPO_USER=${DOCKER_USER} #Github
      - REPO_PASS=${DOCKER_PASS} #Github
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    restart: always
    command: --cleanup --label-enable --interval 30
networks:
  frontend_net:
    external: true
我的问题是,当前端向后端发送请求时,我收到一个403,我认为它是由nginx给出的,但我在日志中也看不到服务的任何内容(这可能意味着请求没有到达它)

我只有来自nginx的以下日志:

myip - - [13/Oct/2020:20:52:30 +0000] "POST /api/auth HTTP/1.1" 403 0 "https://web.me/app/start" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.16; rv:81.0) Gecko/20100101 Firefox/81.0"
2020/10/13 20:52:35 [info] 36#36: *33 client closed connection while waiting for request, client: myip, server: 0.0.0.0:443
有人知道这里发生了什么吗