2026-07-30 19:26:13
通过配置Nginx监听不同端口,可实现同一服务器上不同项目的独立访问。具体步骤如下:
一、编辑Nginx主配置文件定位配置文件Nginx主配置文件通常位于/etc/nginx/nginx.conf,部分系统可能使用/etc/nginx/conf.d/default.conf或/etc/nginx/sites-available/目录下的独立文件。建议通过以下命令确认:
sudo nginx -t # 测试配置文件路径sudo find / -name "nginx.conf" # 全盘搜索配置文件进入配置目录
cd /etc/nginx/基础语法结构每个项目需独立定义一个server块,通过listen指令指定端口,root指令设置项目根目录。示例配置如下:
# 项目A配置(监听80端口)server { listen 80; server_name example.com; # 可选:绑定域名 root /var/www/project_a; # 项目A的根目录 index index.html; # 默认访问文件 location / { try_files $uri $uri/ =404; }}# 项目B配置(监听8080端口)server { listen 8080; server_name example.com; # 可选:绑定域名 root /var/www/project_b; # 项目B的根目录 index index.html; location / { try_files $uri $uri/ =404; }}关键指令说明
listen:指定监听端口(如80、443、8080),IPv6需添加[::]:端口。
root:设置项目文件的绝对路径(如/var/www/project_a)。
server_name:可选,绑定域名后可通过域名+端口访问(如
location:定义请求处理规则,try_files确保文件存在时返回,否则返回404。
若需通过443端口访问HTTPS项目,需添加SSL证书配置:
server { listen 443 ssl; server_name example.com; root /var/www/project_b; index index.html; ssl_certificate /path/to/cert.pem; # 证书路径 ssl_certificate_key /path/to/key.pem; # 私钥路径 location / { try_files $uri $uri/ =404; }}四、验证并重启Nginx检查配置语法
sudo nginx -t输出syntax is ok和test is successful表示配置正确。
重启Nginx服务
sudo systemctl restart nginx # 系统使用systemd时# 或sudo service nginx restart # 旧版系统通过端口直接访问
项目A:http://服务器IP:80 或
项目B:http://服务器IP:8080 或
HTTPS项目:
防火墙放行端口若服务器启用防火墙,需放行对应端口:
sudo ufw allow 80/tcp # Ubuntusudo firewall-cmd --add-port=8080/tcp --permanent # CentOSsudo firewall-cmd --reload端口冲突
错误现象:nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)。
解决方案:使用netstat -tulnp | grep :80查看占用端口的进程,终止后重试。
路径权限问题
错误现象:403 Forbidden。
解决方案:确保Nginx用户(如www-data或nginx)对项目目录有读取权限:sudo chown -R www-data:www-data /var/www/project_asudo chmod -R 755 /var/www/project_a
SELinux限制(CentOS/RHEL)
错误现象:配置正确但无法访问。
解决方案:临时放行HTTP服务:sudo setsebool -P httpd_can_network_connect 1
基于域名的多项目托管若需通过同一端口(如80)访问不同项目,可使用server_name区分域名:
server { listen 80; server_name project1.example.com; root /var/www/project1;}server { listen 80; server_name project2.example.com; root /var/www/project2;}性能优化
启用Gzip压缩:在http块中添加gzip on;。
配置缓存:使用expires指令设置静态资源缓存时间。
负载均衡:通过upstream模块分发请求到多台后端服务器。
通过以上步骤,可高效实现Nginx监听不同端口访问不同项目的需求,同时保障安全性和可扩展性。