首页 > 解决方案 > nginx:nginx反向代理在服务器上工作,但在本地主机上不工作

问题描述

我有一个使用 prisma/graphql 的后端服务。并且后端在端口 4001 上运行。这是我的 Nginx 配置文件的代理通行证proxy_pass:http://$host:4001

当我从服务器运行它时,它同时适用于两者http://server:4001http://server 但是,当我从本地主机运行它时,我收到以下错误:

no resolver defined to resolve localhost, client: 172.30.0.1, server: _, request: "GET / HTTP/1.1", host: "localhost"

是什么导致了这个错误以及如何解决它?

码头工人撰写:

backend:
    image: base
    command: >
      sh -c "npm run deploy && npm run start"
    env_file: ${ENV_FILE}
    ports:
      - '4001:4001'
    depends_on:
      - prisma
    restart: always
    volumes:
      - ./deploy/certs:/deploy/certs

  nginx:
    image: nginx:latest
    volumes:
      - ./deploy/certs:/deploy/certs
      - ./deploy/nginx/conf.d:/etc/nginx/conf.d
    ports:
      - 80:80/tcp
      - 443:443/tcp
    depends_on:
      - backend
    restart: always
    env_file: ${ENV_FILE}

nginx配置:

server {
    listen 80 default_server;
    server_name _;

location / {
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_pass http://$host:4001;

  }
}

标签: javascriptnginxgraphqlprismaprisma-graphql

解决方案


我想您需要连接到文件backend中指定docker-compose.yml的服务nginx.conf

例如

upstream localhost {
  server backend:4001;
}

server {
  listen 80;
  server_name localhost;
}

你能试试这个吗?


推荐阅读