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

相关推荐
雪可问春风1 天前
docker环境部署
运维·docker·容器
lwx9148521 天前
Linux-Shell算术运算
linux·运维·服务器
翻斗包菜1 天前
PostgreSQL 日常维护完全指南:从基础操作到高级运维
运维·数据库·postgresql
somi71 天前
ARM-驱动-02-Linux 内核开发环境搭建与编译
linux·运维·arm开发
海的透彻1 天前
nginx启动进程对文件的权限掌控
运维·chrome·nginx
路溪非溪1 天前
Linux驱动开发中的常用接口总结(一)
linux·运维·驱动开发
此刻觐神1 天前
IMX6ULL开发板学习-01(Linux文件目录和目录相关命令)
linux·服务器·学习
航Hang*1 天前
第3章:Linux系统安全管理——第2节:部署代理服务
linux·运维·服务器·开发语言·笔记·系统安全
fengfuyao9851 天前
VC++基于服务器的点对点文件传输实例
服务器·开发语言·c++
favour_you___1 天前
epoll惊群问题与解决
服务器·网络·tcp/ip·epoll