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变化。

相关推荐
judezh1 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
百万蹄蹄向前冲2 小时前
双端同步!云服务器装最新Node.js v26.10全过程追踪
服务器·人工智能·node.js
春天花会开1312 小时前
内网 HTTPS 部署实战:私有 CA + Nginx 反向代理全流程复盘
运维·nginx·https
AllFiles2 小时前
K8s Node Exporter 异常 Write 超时排查实录
运维·后端·kubernetes
虎头金猫5 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
还是大剑师兰特5 天前
解决nginx错误:http://localhost:7000正常,http://localhost:7000/map 报错404
nginx·大剑师
AI职业加油站6 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
此冬歌咏6 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
xing-xing6 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
-梅6 天前
linux(8) 软硬链接
linux·运维·服务器