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

相关推荐
救救孩子把2 小时前
AI面试八股文-13_12-AI 框架与运维面试题
运维·人工智能·面试
小范的技术工坊2 小时前
Linux应用开发(文件属性)
linux·运维·服务器
古法老登瞎折腾3 小时前
大数据智能运维实战(一):机器和任务数据都有了,如何用 MCP 搭建运维助手?
大数据·运维·spring boot·spring ai·mcp
开开心心就好3 小时前
多份文档怎么批量打印?支持多种格式
java·服务器·开发语言·pdf·ocr·散列表·启发式算法
海宇数据3 小时前
零信任架构实战:基于海宇入职背调报告构建自动化即时配送与网约车众包运力准入鉴权网关
运维·人工智能·架构·自动化
姜鱼问生3 小时前
每次开机手动检查 6 样东西?我写了个 2 秒自检脚本
运维·网络·nginx·docker·容器
wangqiaowq4 小时前
PostgresSQL server Docker 安装部署
运维·docker·容器
南棋网络安全4 小时前
ssrf跨站请求伪造(保姆级教程)
运维·服务器·网络·网络安全
帷幕落秋4 小时前
进程服务与文件描述符
linux·运维·面试
帷幕落秋5 小时前
信号、Ctrl 组合键与进程状态
linux·运维·面试