第一次在码头使用nginx反向代理时,我需要您的帮助,我有一个用golang编写的服务,我正在尝试实现nginx,但是我得到了错误,不知道发生了什么。
这是我的yml文件:
version: "3.6"
services:
reverse-proxy:
image: nginx:1.17.10
container_name: reverse_proxy
volumes:
- ./reverse_proxy/nginx.conf:/etc/nginx/nginx.conf
ports:
- 80:80这是我的nginx.conf文件:
events {
worker_connections 1024;
}
http {
server {
listen 80 default_server;
server_name localhost 127.0.0.1;
location /api/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8081;
}
}}
在运行我的服务和码头-当我点击compose/api im获取坏网关502时,尽管如果我运行compose:8081,我的服务在没有任何issue.Any帮助的情况下运行是值得赞赏的,因为我确实预先卡住了here.Thanks。
发布于 2022-05-10 02:34:08
这更多地是一个Docker问题,而不是nginx或go,当您在Docker引擎中运行容器时,每个容器都将彼此隔离运行,因此您的nginx服务不知道您的后端服务。
因此,要解决这个问题,您应该使用Docker 。网络将使您的服务能够在它们之间进行通信。要做到这一点,您应该首先编辑docker-compose.yml文件
# docker-compose.yml
version: "3.8"
services:
my_server_service:
image: your_docker_image
restart: "always"
networks:
- "api-network"
reverse-proxy:
image: nginx:1.17.10
container_name: reverse_proxy
volumes:
- ./reverse_proxy/nginx.conf:/etc/nginx/nginx.conf
ports:
- 80:80
networks:
- "api-network"
networks:
api-network:之后,您需要更改nginx.conf文件的代理传递以使用与后端服务相同的名称,因此将字符串"127.0.0.1“更改为"my_server_service”。
# nginx.conf
user nginx;
events {
worker_connections 1024;
}
http {
server {
listen 80 default_server;
server_name localhost 127.0.0.1;
location /api/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://my_server_service:8081;
}
}此外,由于您使用nginx作为反向代理,您甚至不需要将后端服务端口绑定到您的主机,所以docker网络可以在服务之间内部解决它。
https://stackoverflow.com/questions/72179192
复制相似问题