问题描述
我想将所有流量从 http://localhost:8080 重定向到 http://my-service:8080
但是当我访问 http://localhost:8080 时,Nginx 将我重定向到 http://localhost
这是我的 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/;
}
}