详解如何设置Nginx实现内外网端口映射

 更新时间:2024年10月22日 10:41:49   作者:间彧  
在 Nginx 中实现内外网端口映射是一种常见的做法,本文详细介绍如何设置 Nginx 实现内外网端口映射,有需要的小伙伴可以跟随小编一起学习一下

在 Nginx 中实现内外网端口映射是一种常见的做法,通常用于将内部网络中的服务通过 Nginx 反向代理到外部网络,使外部用户能够访问这些服务。下面将详细介绍如何设置 Nginx 实现内外网端口映射。

环境准备

假设你有以下环境:

  • 内网服务运行在 192.168.1.108080 端口
  • 外网 Nginx 服务器的 IP 地址为 203.0.113.1
  • 需要将外网访问 203.0.113.180 端口的请求映射到内网的 8080 端口

1. 安装 Nginx

如果尚未安装 Nginx,可以使用以下命令进行安装(以 Ubuntu 为例):

sudo apt update
sudo apt install nginx

2. 配置 Nginx 端口映射

编辑 Nginx 配置文件,一般可以在 /etc/nginx/sites-available/default/etc/nginx/nginx.conf 中进行配置。

示例配置

在 Nginx 配置文件中添加以下内容:

server {
    listen 80;  # 监听外网请求的 80 端口
    server_name 203.0.113.1;  # 外网服务器 IP 或域名

    location / {  # 所有请求都会匹配这个 location
        proxy_pass http://192.168.1.10:8080;  # 将请求转发到内网服务
        proxy_set_header Host $host;  # 保留原始主机头
        proxy_set_header X-Real-IP $remote_addr;  # 传递真实客户端 IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 传递代理链中的所有 IP
        proxy_set_header X-Forwarded-Proto $scheme;  # 传递请求协议
    }
}

3. 说明配置项

  • listen 80;: 监听外网请求的 80 端口。
  • server_name 203.0.113.1;: 指定处理的外网 IP 地址或域名。
  • location /: 该配置处理所有传入请求。
  • proxy_pass http://192.168.1.10:8080;: 将请求转发到内网服务。
  • proxy_set_header: 这些指令用于保留和转发必要的请求头,以确保后端服务获取到原始请求的信息。

4. 测试和重启 Nginx

在修改配置文件后,使用以下命令测试 Nginx 配置的正确性:

sudo nginx -t

如果没有错误,重启 Nginx 使配置生效:

sudo systemctl restart nginx

5. 允许外部访问 Nginx

确保防火墙或安全组允许外部访问 Nginx 服务器的 80 端口。以 UFW 为例,可以使用以下命令:

sudo ufw allow 'Nginx Full'

6. 验证端口映射

在配置完成后,您可以通过 curl 或浏览器测试接口是否能够正常访问。例如:

curl http://203.0.113.1/

如果一切配置正确,您应该能够通过外网地址访问内网接口。

7. 其他配置选项

HTTPS 支持

如果希望通过 HTTPS 提供服务,可以使用 Let's Encrypt 免费证书。安装 Certbot 并获取证书:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com  # 将 yourdomain.com 替换为您的域名

配置 HTTPS 示例

server {
    listen 80;
    server_name yourdomain.com;

    # 强制重定向到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;  # 监听 HTTPS
    server_name yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;  # SSL 证书路径
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;  # SSL 密钥路径

    location / {
        proxy_pass http://192.168.1.10:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

8. 总结

通过以上步骤,您可以使用 Nginx 实现内外网的端口映射。这种配置可以有效保护内网服务,同时允许外部用户安全地访问这些服务。根据需要,您可以进一步调整配置以满足特定的业务需求。

到此这篇关于详解如何设置Nginx实现内外网端口映射的文章就介绍到这了,更多相关Nginx内外网端口映射内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nginx 实现灰度发布的三种方法总结

    Nginx 实现灰度发布的三种方法总结

    这篇文章主要介绍了Nginx 实现灰度发布的三种方法总结的相关资料,需要的朋友可以参考下
    2017-05-05
  • 全面解析Nginx到底能做什么

    全面解析Nginx到底能做什么

    本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,具体内容详情大家跟随小编一起通过本文学习吧
    2018-10-10
  • Nginx 配置 HTTPS 与 WSS 完整指南(最新推荐)

    Nginx 配置 HTTPS 与 WSS 完整指南(最新推荐)

    本教程将手把手教你如何为网站配置 HTTPS 加密访问,并通过反向代理实现安全的 WebSocket(WSS)通信,感兴趣的朋友跟随小编一起看看吧
    2025-05-05
  • Nginx如何配置Http、Https、WS、WSS的方法步骤

    Nginx如何配置Http、Https、WS、WSS的方法步骤

    这篇文章主要介绍了Nginx如何配置Http、Https、WS、WSS的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Nginx内置变量应用场景分析

    Nginx内置变量应用场景分析

    Nginx内置变量速查表,涵盖请求URI、客户端信息、服务器信息、文件路径、响应与性能等类别,这篇文章给大家介绍Nginx内置变量应用场景分析,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • nginx之Http代理和Websocket代理详解

    nginx之Http代理和Websocket代理详解

    本文介绍了在Ubuntu上安装和配置Nginx的步骤,包括启动、停止、重新加载配置、重新打开日志文件、查看进程等常用命令,还详细介绍了Nginx的静态代理和负载均衡功能,包括轮询、最少连接数、iphash和权重等策略
    2025-03-03
  • 服务器部署之虚拟机安装nginx并部署web网页

    服务器部署之虚拟机安装nginx并部署web网页

    本文提供了一个关于Nginx的安装与配置的简单入门教程,涵盖从安装所需插件(如gcc、zlib、pcre、openssl等),到下载、解压、编译安装Nginx的完整过程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • Nginx轻松搞定跨域问题完整过程

    Nginx轻松搞定跨域问题完整过程

    这篇文章主要给大家介绍了关于Nginx轻松搞定跨域问题的相关资料,大家在使用nginx进行服务器管理,经常会遇到跨域问题,文中将解决方法介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • 基于nginx获取代理服务ip以及客户端真实ip详解

    基于nginx获取代理服务ip以及客户端真实ip详解

    最近在研究nginx中如何获取真实客户端IP的方法,下面这篇文章主要给大家介绍了基于nginx获取代理服务ip以及客户端真实ip的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Nginx配置Basic Auth登录认证的实现方法

    Nginx配置Basic Auth登录认证的实现方法

    这篇文章主要介绍了Nginx配置Basic Auth登录认证的实现方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09

最新评论