一个nginx上面监听80端口,对应servicename不一样开源吗? 比如 abc.net,zztools.mmm.com 都使用80端口,怎么办。都是指向同一个ip
- 经验分享
- 时间:2026-05-23 22:34
- 20人已阅读
🔔🔔好消息!好消息!🔔🔔
有需要的朋友👉:微信号
你的问题正是Nginx的核心功能之一,它通过 “基于域名的虚拟主机” 技术,完美支持多个域名共用一个80端口,无需额外付费,完全是开箱即用的。
🚀 核心:每个域名一个 server 块
解决这个问题的关键在于,为每个域名创建一个独立的 server 配置块。Nginx会检查HTTP请求头中的 Host 字段,并根据 server_name 的配置将请求路由到正确的 server 块。
以下是一个最基础的配置示例,展示了如何让 abc.net 和 zztools.kaigejava.com 分别指向服务器上不同的网站目录:
server {
listen 80; # 监听 80 端口
server_name abc.net; # 处理指向此域名的请求
root /var/www/abc; # 网站文件存放的根目录
index index.html index.htm;
}
server {
listen 80; # 同样监听 80 端口
server_name zztools.kaigejava.com; # 处理指向此域名的请求
root /var/www/zztools; # 为第二个域名指定不同的网站目录
index index.html index.htm;
}🔄 常用组合模式:静态文件 + 反向代理
实际业务中,一个项目是静态网站,另一个是后端服务的情况很常见。下面这种组合非常实用:abc.net 直接处理静态文件,而 zztools.kaigejava.com 作为反向代理,将请求转发给服务器上运行的 Node.js 或 Java 应用。
server {
listen 80;
server_name abc.net;
root /var/www/jiahoayou;
index index.html;
}
server {
listen 80;
server_name zztools.kaigejava.com;
location / {
proxy_pass http://localhost:3000; # 转发给本地 3000 端口的应用
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}📋 最佳实践与建议
配置文件拆分管理:为每个域名在
/etc/nginx/conf.d/目录下创建一个独立的.conf文件(如abc.net.conf),然后在主配置文件nginx.conf的http块中统一引入。这种方式清晰明了,便于维护和排查问题。测试与重载:每次修改配置后,务必先运行
sudo nginx -t进行语法测试。测试通过后,用sudo systemctl reload nginx或sudo nginx -s reload重新加载配置,使修改生效,此过程不会中断服务。
⚠️ 常见问题与排查
server_name重复警告:如果启动或重载时遇到[warn] conflicting server name ...警告,说明你在相同的端口(如80)上为同一个域名配置了多个server块。检查并删除或禁用重复的配置块即可。域名指向错误网站:这通常是你配置的默认
server块生效了。Nginx会使用第一个监听了80端口的server块作为默认处理者。你可以通过创建一个default_server来返回404或指定错误处理行为。网站无法访问:请检查本地防火墙(如
iptables,firewalld)是否放行了80端口。同时,需要确保所有域名都已通过域名服务商正确解析到了服务器的公网IP。
💎 进阶说明
动态后端:如果你的后端应用是动态的(如PHP, Python, Node.js),
server块内的配置会不同。例如,PHP项目通常需要配合fastcgi_pass指令将请求转发给PHP-FPM服务来处理。你可以根据你的具体技术栈进行扩展。HTTPS配置:如果未来需要启用HTTPS,请使用
listen 443 ssl;并配置证书路径。对于多个HTTPS站点,Nginx支持SNI,可以在同一个IP和端口上使用不同证书。
💎 总结
总的来说,通过配置多个 server 块,Nginx能轻松实现你“不同域名共用80端口”的需求。基于上面提供的模板,你可以很方便地为每个域名设置专属的网站目录,或者通过反向代理,让不同域名的请求流转到后端的各种服务上。
你的这两个域名,后端分别对应什么类型的应用呢?比如一个是静态网站,另一个是Java或Node.js的服务?告诉我具体的应用类型,我可以直接给你生成拿来即用的配置参考~
上一篇: 域名在腾讯云购买的,怎么将二级域名解析到非腾讯云服务器ip
下一篇: 返回列表