新闻资讯

nginx端口映射怎么做?

2025-09-10

Nginx端口映射是借助Nginx服务器将外网对特定端口的访问请求,转发到内网指定服务器对应端口的操作,以此实现外网对内网服务的访问。下面详细介绍其实现步骤:
1. 安装Nginx:在不同的Linux发行版中,安装方式有所不同。
-Ubuntu:使用命令sudoaptupdate更新软件包列表,然后执行sudoaptinstallnginx进行安装。
-CentOS:先安装EPEL源(ExtraPackagesforEnterpriseLinux),命令为sudoyuminstallepel-release,之后执行sudoyuminstallnginx安装Nginx。
2. 准备映射环境:明确内网服务的相关信息,包括内网服务器的IP地址以及服务所使用的端口号。例如,内网中有一台Web服务器,IP地址为192.168.1.100,运行服务的端口是8080。同时,需要知道Nginx服务器的公网IP地址,假设为202.100.1.1。
3. 配置Nginx端口映射:Nginx的配置文件通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/default,以/etc/nginx/sites-available/default为例进行配置说明。
-打开配置文件:使用文本编辑器,如sudovi/etc/nginx/sites-available/default。
-添加或修改配置内容:

server{
listen80;#监听外网请求的80端口,可根据需求修改为其他端口
server_name202.100.1.1;#填写Nginx服务器的公网IP或<a href='https://domain.oray.com/' target='_blank'>域名</a>
location/{#所有请求都会匹配这个location
proxy_passhttp://192.168.1.100:8080;#将请求转发到内网服务
proxy_set_headerHost$host;#保留原始主机头
proxy_set_headerX-Real-IP$remote_addr;#传递真实客户端IP
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;#传递代理链中的所有IP
proxy_set_headerX-Forwarded-Proto$scheme;#传递请求协议
}
}

上述配置中,listen指定了Nginx监听的外网端口;server_name指定处理的外网IP地址或域名;location/表示匹配所有请求路径;proxy_pass将请求转发到内网服务地址;proxy_set_header系列指令用于保留和转发必要的请求头,确保后端服务获取原始请求信息。
4. 测试Nginx配置:修改配置文件后,使用命令sudonginx-t测试配置是否正确。如果提示“SyntaxOK”,说明配置无误;若有错误,需根据提示信息修改配置文件。
5. 重启Nginx服务:测试通过后,执行sudosystemctlrestartnginx命令,使新的配置生效。
6. 开放端口:确保服务器的防火墙或安全组允许外部访问Nginx监听的端口。例如,在使用UFW防火墙的Ubuntu系统中,执行sudoufwallow'NginxFull'命令允许外部访问Nginx相关端口。若使用的是CentOS系统且防火墙为FirewallD,可执行sudofirewall-cmd--zone=public--add-port=80/tcp--permanent(假设Nginx监听80端口),然后sudofirewall-cmd--reload使设置生效。
7. 验证端口映射:配置完成后,可使用curl命令或浏览器进行验证。如在浏览器地址栏输入http://202.100.1.1 (假设Nginx监听80端口且无其他特殊配置),若能正常访问到内网Web服务器的内容,说明端口映射配置成功。
在进行Nginx端口映射时,还可根据实际需求进行更复杂的配置,如基于路径的映射、配置HTTPS支持等。例如,若想将不同路径的请求转发到不同端口的服务上,可如下配置:

server{
listen9001;#监听端口9001
server_name192.168.1.129;#服务器IP
location/edu/{
proxy_passhttp://127.0.0.1:8080;#将/edu/路径映射到8080端口的服务
}
location/vod/{
proxy_passhttp://127.0.0.1:8081;#将/vod/路径映射到8081端口的服务
}
}

这样,当访问http: //192.168.1.129:9001/edu/ 时,请求会转发到本地127.0.0.1的8080端口服务;访问http: //192.168.1.129:9001/vod/ 时,请求会转发到本地127.0.0.1的8081端口服务。


拓展阅读

1、Nginx反向代理原理:Nginx反向代理工作在客户端和服务器之间,客户端向Nginx发送请求,Nginx根据配置规则将请求转发到后端的真实服务器,然后将真实服务器的响应返回给客户端。客户端并不知道自己访问的是代理服务器,以为直接访问的就是后端真实服务器。这一过程中,Nginx隐藏了后端服务器的真实地址,起到了保护服务器、负载均衡、缓存等作用。
2、Nginx配置文件中location的匹配规则:在Nginx配置文件中,location用于定义请求的匹配规则。location=/uri表示精确匹配,只有完全匹配上才能生效;location^~/uri表示对URL路径进行前缀匹配,且在正则之前;location~pattern表示区分大小写的正则匹配;location~*pattern表示不区分大小写的正则匹配;location/uri不带任何修饰符,也表示前缀匹配,但在正则匹配之后;location/是通用匹配,任何未匹配到其它location的请求都会匹配到,类似switch中的default。多个location配置时,匹配顺序依次为精确匹配、前缀匹配(^~)、按文件中顺序的正则匹配、不带修饰的前缀匹配,最后是通用匹配。
3、Nginx与花生壳结合实现内网穿透:对于没有公网IP的用户,可结合花生壳实现内网穿透。花生壳提供动态DNS服务,将动态IP地址映射到用户自定义域名。先在服务器安装花生壳客户端,注册账号登录后,在花生壳管理界面设置端口映射,将内网服务端口与Nginx服务器相关联。同时,Nginx配置好内网服务的转发规则。这样,外网用户通过花生壳提供的域名就能访问到内网服务,实现安全的内网穿透。

上一篇: 在外网怎么访问ftp服务器 下一篇:
新闻资讯
热门专题
最新专题
友情链接