Nginx虚拟主机端口转发配置指南
一、基础概念与准备工作
Nginx虚拟主机通过server
块实现不同端口或域名的服务隔离,端口转发功能包含HTTP协议代理和TCP/UDP层代理两种模式。配置前需确保:
- 已安装Nginx基础环境
- 具有
root
或sudo
权限修改配置文件 - 确认防火墙开放目标端口
二、HTTP端口转发配置
在http
模块中添加以下配置实现80到8080端口转发:
server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host;
该配置通过proxy_pass
指令将HTTP请求转发到后端服务,需注意保留Host
请求头确保服务识别正确域名。
三、TCP/UDP端口转发配置
需编译安装--with-stream
模块后,在stream
模块添加TCP端口转发:
stream { server { listen 3306; proxy_pass 192.168.1.100:3306; proxy_timeout 300s;
该配置支持数据库等TCP协议转发,proxy_timeout
参数可优化长连接场景的性能。
四、多虚拟主机管理实践
通过多server
块实现不同端口的虚拟主机:
- 创建
/etc/nginx/conf.d/
目录存放独立配置文件 - 为每个服务创建独立配置文件(如
app1.conf
) - 使用
listen
指令区分监听端口
典型的多端口配置示例如下:
# 80端口HTTP服务 server { listen 80; ... } # 81端口测试环境 server { listen 81; root /html-81; ... }
通过Nginx的http
和stream
模块可实现灵活的端口转发方案,建议将不同服务拆分为独立配置文件以提高可维护性。配置完成后需执行nginx -t
验证语法,并通过systemctl reload nginx
热加载配置。