phpEnv怎么配置Nginx根据Host分发到不同端口实现端口路由

来源:站长站作者:北京GEO公司头衔:草根站长
导读:本期聚焦于小伙伴创作的《phpEnv怎么配置Nginx根据Host分发到不同端口实现端口路由》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《phpEnv怎么配置Nginx根据Host分发到不同端口实现端口路由》有用,将其分享出去将是对创作者最好的鼓励。

在本地开发场景中,我们经常会同时运行多个不同端口的服务,比如前端项目运行在3000端口,后端API服务运行在8080端口,为了方便区分访问,通常会给不同服务绑定不同的本地Host域名,再通过Nginx根据Host把请求分发到对应的端口。phpEnv作为常用的本地集成环境,内置了Nginx服务,只需要简单修改配置就能实现这个需求。

phpEnv怎么配置Nginx根据Host分发到不同端口实现端口路由

前置准备

首先需要确保已经安装好phpEnv,并且Nginx服务处于正常运行状态。同时要提前规划好需要绑定的Host域名和对应的服务端口,比如我们规划两个规则:

  • 域名front.test对应前端服务,端口3000
  • 域名api.test对应后端服务,端口8080

还需要在本地hosts文件中添加对应的域名解析,把这两个域名指向127.0.0.1,hosts文件路径一般是C:WindowsSystem32driversetchosts,添加内容如下:

127.0.0.1 front.test
127.0.0.1 api.test

找到phpEnv的Nginx配置文件

打开phpEnv面板,点击左侧的Nginx选项,在右侧可以看到配置目录的入口,点击进入Nginx的配置文件夹,通常路径是phpEnv安装目录下的nginx/conf。我们需要找到虚拟主机的配置位置,phpEnv默认会在nginx.conf中通过include指令引入vhost目录下的所有.conf配置文件,所以我们可以在vhost目录下新建配置文件,避免直接修改主配置文件。

编写Host分发配置

在vhost目录下新建一个文件,比如命名为host_route.conf,然后添加以下配置内容:

# 前端服务配置,匹配Host为front.test的请求
server {
    listen       80;
    server_name  front.test;
    
    location / {
        # 转发到3000端口的前端服务
        proxy_pass http://127.0.0.1:3000;
        # 保留原始请求的Host头
        proxy_set_header Host $host;
        # 保留客户端真实IP
        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;
    }
}

# 后端服务配置,匹配Host为api.test的请求
server {
    listen       80;
    server_name  api.test;
    
    location / {
        # 转发到8080端口的后端服务
        proxy_pass http://127.0.0.1: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;
    }
}

配置中的server_name就是用来匹配请求的Host字段,proxy_pass指定了对应请求要转发的目标端口地址。如果有更多服务需要添加,只需要按照同样的格式新增server块即可。

重载Nginx配置

配置文件保存后,回到phpEnv的Nginx管理面板,点击重载配置按钮,让新的配置生效,不需要重启整个Nginx服务。如果重载失败,可以查看Nginx的error.log日志排查问题,日志路径一般在nginx/logs/error.log。

测试配置是否生效

先确保3000端口和8080端口的服务都已经启动,然后打开浏览器分别访问front.test和api.test,如果能正确显示对应端口的服务内容,说明Host分发配置已经生效。如果访问出现404或者502错误,可以先检查目标端口的服务是否正常运行,再检查Nginx配置中的端口和Host是否填写正确。

注意事项

  • 如果配置的端口对应的服务没有启动,Nginx转发请求时会返回502 Bad Gateway错误,需要先启动目标服务再测试
  • 新增配置后一定要重载Nginx配置,否则修改不会生效
  • 如果需要支持HTTPS,可以在server块中添加对应的SSL证书配置,监听443端口即可
  • phpEnv的Nginx版本如果有更新,配置规则是通用的,不会受版本影响

phpEnvNginxHost分发端口路由修改时间:2026-06-28 00:36:30

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。