nginx 问题/导致重定向到端口 80

问题描述

我想将所有流量从 http://localhost:8080 重定向到 http://my-service:8080

但是当我访问 http://localhost:8080 时,Nginx 将我重定向到 http://localhost

enter image description here

这是我的 Nginx.conf

events {
  worker_connections  1024;  ## Default: 1024
}

http{

    server {
       listen 8080 default_server;
       listen [::]:8080 default_server;

       server_name localhost;

       location / {
           proxy_set_header Host $host;
           proxy_set_header X-Forwarded-For $remote_addr;
           proxy_pass http://my-service:8080/;
       }
     }

}

这是我的 docker-compose

version: '2.1'
services:

  Nginx-proxy:
    image: Nginx:stable-alpine
    container_name: Nginx-proxy
    ports:
      - "8080:8080"
    volumes:
      - ./data/Nginx/Nginx.conf:/etc/Nginx/Nginx.conf
    networks:
     - no-internet
     - internet


  my-service:
    ....
    expose:
     - "8080"
    networks:
     - no-internet


networks:
  internet:
    driver: bridge
  no-internet:
    internal: true
    driver: bridge

当我在没有 Nginx 的情况下运行 docker compose 时,我可以访问 http://localhost:8080 而无需重定向

解决方法

我解决了这个问题:

server {
   listen 8080;
   listen [::]:8080;

   server_name localhost;
   
    location / {
      proxy_pass http://ap-service:8080;
      proxy_redirect http://ap-service:8080/ $scheme://$host:8080/;
    }
 }