当前位置: 首页 > ai >正文

[运维][服务器][lightsail] Nginx反向代理实现端口映射:将80端口转发至本地5000端口

在部署 Web 应用时,通常本地开发环境运行在 localhost:5000 或其他高位端口,但线上用户只能通过标准端口如 80(HTTP)访问。此时就需要用到 Nginx 的反向代理功能,将外部请求的 80 端口转发到内部应用端口(如 5000),实现无缝对接。

本文将手把手教你如何通过 Nginx 实现端口映射,适用于 Ubuntu 系统(如 AWS Lightsail 环境)。


一、为什么需要反向代理?

大多数后端框架(如 Flask、Django、Node.js)默认监听的端口不是 80,而云服务器的开放端口配置和用户访问习惯通常要求监听 80 或 443(HTTPS)。此时通过反向代理实现端口映射,不仅安全、灵活,还能为后续的负载均衡、HTTPS 配置打好基础。


二、准备工作:进入项目配置环境

  1. 推荐进入你的项目文件夹,方便后续操作。

    cd /your/project/folder
    
  2. 打开 Nginx 配置文件进行编辑

    • 常见配置文件路径:

      • /etc/nginx/sites-available/default

      • /etc/nginx/nginx.conf

    • 推荐使用 nano 编辑器:

      sudo nano /etc/nginx/sites-available/default
      

三、编写 Nginx 监听配置

在打开的配置文件中 不要修改原有的 server,而是在文件底部追加以下内容:

server {listen 80;server_name your-domain.com;  # 改为你的域名或公网 IPlocation / {proxy_pass http://127.0.0.1:5000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
}

编辑提示

  • 输入完成后按下 Ctrl+O 保存文件。

  • 然后按下 Ctrl+X 退出编辑器。


四、使配置生效

  1. 测试配置是否正确

    sudo nginx -t
    

    如果出现 syntax is oktest is successful,说明配置无误。

  2. 重载 Nginx 使配置生效

    sudo systemctl reload nginx
    

五、Lightsail 特殊说明

如果你使用 AWS Lightsail:

  • 你应该编辑的是 /etc/nginx/sites-available/default 文件。

  • 修改时建议 不要动顶部的原始 server 配置,直接 滚动到最下方 添加上面的反向代理配置。

  • 如权限不足,可用 sudo nano 进入编辑。


总结

通过以上步骤,你就完成了将外部请求的 80 端口映射到本地应用 5000 端口的操作,用户访问你的域名或服务器 IP 时,将自动由 Nginx 转发至你的后端服务。此法不仅适用于 Flask、Django,也适用于 Node.js、Go 等任意 Web 服务。


✅ 核心步骤回顾:

  • 进入配置文件:sudo nano /etc/nginx/sites-available/default

  • 添加监听代理配置(监听 80,转发至 127.0.0.1:5000)

  • 测试配置:sudo nginx -t

  • 重载服务:sudo systemctl reload nginx

http://www.xdnf.cn/news/8884.html

相关文章:

  • 【运维】OpenWrt 中禁用 ZeroTier IPv6 配置指南
  • 【后端高阶面经:缓存篇】37、高并发系统缓存性能优化:从本地到分布式的全链路设计
  • 【数据结构】--二叉树--堆(上)
  • 【C++11】特性详解
  • UE 5 C++设置物体位置和旋转,初始化虚幻引擎样条线、加载引用虚幻编辑器中的蓝图、设置虚幻编辑器中Actor大小
  • [yolov11改进系列]基于yolov11替换卷积神经网CNN为KANConv的python源码+训练源码
  • AI 集成
  • Python应用运算符初解
  • Python笔记:windows下编译python3.8.20
  • Ecography投稿细节记录
  • 【C++】string的模拟实现
  • MYSQL中的分库分表及产生的分布式问题
  • Spring AI 与 Python:AI 开发的新老势力对决与协作
  • Java核心知识点DAY03:全解析从基础到企业级开发实战
  • 线程池实战——数据库连接池
  • 工程师 - Worm Gear
  • [C++] 洛谷B3959(GESP2024三月四级)做题
  • Linux 下VS Code 的使用
  • 【Python Cookbook】迭代器与生成器(二)
  • Java文件操作:从“Hello World”到“Hello File”
  • 嵌入式知识篇---热熔胶
  • 22 程序控制语句详解:跳转控制(break、continue、goto)、死循环应用、程序控制编程实战
  • SQL进阶之旅 Day 3:索引基础与应用
  • conda 环境中opencv 报错以及其他报错
  • OD 算法题 B卷【寻找最大价值的矿堆】
  • 匿名内部类与函数式编程
  • MYSQL中的分库分表
  • CQF预备知识:Python相关库 -- NumPy 基础知识 - ndarray 索引
  • MedGemma 简介
  • leetcode3-无重复字符的最长子串