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

相关推荐
HIT_Weston3 小时前
93、【Ubuntu】【Hugo】搭建私人博客:面包屑(一)
linux·运维·ubuntu
cuijiecheng20183 小时前
Linux下Beyond Compare过期
linux·运维·服务器
喵叔哟3 小时前
20.部署与运维
运维·docker·容器·.net
HIT_Weston3 小时前
92、【Ubuntu】【Hugo】搭建私人博客:侧边导航栏(六)
linux·运维·ubuntu
CodeAllen嵌入式3 小时前
Windows 11 本地安装 WSL 支持 Ubuntu 24.04 完整指南
linux·运维·ubuntu
期待のcode3 小时前
前后端分离项目 Springboot+vue 在云服务器上的部署
服务器·vue.js·spring boot
AI 智能服务4 小时前
第6课__本地工具调用(文件操作)
服务器·人工智能·windows·php
松涛和鸣6 小时前
49、智能电源箱项目技术栈解析
服务器·c语言·开发语言·http·html·php
凉、介7 小时前
SylixOS 中的 Unix Socket
服务器·c语言·笔记·学习·嵌入式·sylixos
RisunJan7 小时前
Linux命令-ipcs命令(报告进程间通信(IPC)设施状态的实用工具)
linux·运维·服务器