nginx中proxy_pass配置

nginx的的运行方式不同,配置文件中proxy_pass也需进行相应的配置,下面介绍几种:

1. Nginx 运行在宿主机

代理到本地服务:

bash 复制代码
location /api/ {
    proxy_pass http://127.0.0.1:8080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
}

代理到远程服务器:

192.168.1.100为远程服务器上的ip地址,需根据实际进行替换

bash 复制代码
location /app/ {
    proxy_pass http://192.168.1.100:3000/;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

2. Nginx 运行在 Docker 容器

第1种:使用 Docker 容器名称(推荐)

app-container为容器名称,8080为容器对外暴露的端口。

bash 复制代码
upstream backend {
    server app-container:8080;
}

server {
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

使用该方式须确保关联的容器在同一网络中,可以使用下面的的方式让容器处在同一网络中

使用Docker 网络来解耦容器 IP,下面代码创建了app-net的Docker网络,然后将app容器连接上app-net网络,再将nginx容器连接上app-net网络,最后nginx容器中就可以像上面这样进行配置。

bash 复制代码
docker network create app-net
docker network connect app-net myapp
docker network connect app-net nginx

第2种:使用 Docker 网络 IP

bash 复制代码
location /api/ {
    proxy_pass http://172.18.0.2:3000;
    proxy_set_header Host $host;
}

上面代码中的172.18.0.2为容器的ip,可能通过docker inspect 容器id或名称获得

通过Networks中的IPAddress字段获得

推荐使用容器名称的方式,因为容器重启可能会导致IPAddress变化。

相关推荐
较劲男子汉20 小时前
CANN Runtime零拷贝传输技术源码实战 彻底打通Host与Device的数据传输壁垒
运维·服务器·数据库·cann
wypywyp20 小时前
8. ubuntu 虚拟机 linux 服务器 TCP/IP 概念辨析
linux·服务器·ubuntu
风流倜傥唐伯虎20 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
Doro再努力20 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
senijusene20 小时前
Linux软件编程:IO编程,标准IO(1)
linux·运维·服务器
不像程序员的程序媛20 小时前
Nginx日志切分
服务器·前端·nginx
忧郁的橙子.20 小时前
02-本地部署Ollama、Python
linux·运维·服务器
醇氧20 小时前
【linux】查看发行版信息
linux·运维·服务器
No8g攻城狮21 小时前
【Linux】Windows11 安装 WSL2 并运行 Ubuntu 22.04 详细操作步骤
linux·运维·ubuntu
酷酷的崽79821 小时前
CANN 生态可维护性与可观测性:构建生产级边缘 AI 系统的运维体系
运维·人工智能