如何使用Nginx在同一VPS上托管两个无端口访问的网站
解决Pterodactyl面板下多域名无端口访问问题
核心方案
通过宿主机Nginx做反向代理,监听默认HTTP端口80,根据请求域名将流量转发到对应Pterodactyl容器的Nginx端口,实现不带端口直接访问网站。
操作步骤
1. 确认宿主机已安装Nginx
若宿主机未安装Nginx,以Ubuntu/Debian系统为例执行安装命令:
apt update && apt install nginx -y
2. 配置宿主机Nginx虚拟主机
在/etc/nginx/sites-available/目录下创建两个域名对应的配置文件:
针对mydomain1.com的配置
创建文件/etc/nginx/sites-available/mydomain1.com,内容如下:
server { listen 80; server_name mydomain1.com; location / { # 转发到对应Pterodactyl容器的端口(示例为20002) proxy_pass http://localhost:20002; 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; } }
针对mydomain2.com的配置
创建文件/etc/nginx/sites-available/mydomain2.com,注意修改转发端口为第二个容器的端口(示例为20003):
server { listen 80; server_name mydomain2.com; location / { # 转发到第二个Pterodactyl容器的端口 proxy_pass http://localhost:20003; 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; } }
3. 启用配置并验证合法性
将配置文件软链接到启用目录:
ln -s /etc/nginx/sites-available/mydomain1.com /etc/nginx/sites-enabled/ ln -s /etc/nginx/sites-available/mydomain2.com /etc/nginx/sites-enabled/
测试Nginx配置是否正确:
nginx -t
若输出nginx: configuration file /etc/nginx/nginx.conf test is successful,说明配置合法。
4. 重启宿主机Nginx
systemctl restart nginx
5. 开放防火墙80端口
- 若使用ufw防火墙:
ufw allow 80/tcp ufw reload
- 若使用firewalld防火墙:
firewall-cmd --add-port=80/tcp --permanent firewall-cmd --reload
6. 配置域名解析
将mydomain1.com和mydomain2.com的A记录均指向VPS公网IP,等待解析生效(可通过ping mydomain1.com验证)。
额外注意事项
- 建议启用HTTPS,可使用Certbot申请免费SSL证书,将监听端口改为443并配置SSL参数。
- 确认Pterodactyl容器的端口已正确映射到宿主机(可在面板容器设置中查看)。
- 容器内的Nginx配置无需修改
listen端口,保持原有配置即可。
内容的提问来源于stack exchange,提问作者karlo292
相关产品推荐
相关产品推荐

