You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 20.04内部服务器路由配置:多应用路径访问实现求助

多应用路径映射入门配置指导(Ubuntu 20.04)

核心思路是用反向代理服务器(推荐Nginx,入门友好)统一接收80端口请求,根据路径转发到不同应用,实现单IP多路径访问。以下是分步操作:

1. 安装并启动Nginx

先部署Nginx作为反向代理入口:

sudo apt update && sudo apt install nginx
sudo systemctl start nginx
sudo systemctl enable nginx

验证Nginx状态:在浏览器访问服务器IP,能看到Nginx默认页面即说明正常。

2. 调整GitLab配置适配子路径

GitLab默认监听80端口,需修改配置让它在/git路径下运行,同时避免和主Nginx端口冲突:

  • 编辑GitLab主配置文件:
    sudo nano /etc/gitlab/gitlab.rb
    
  • 修改以下参数:
    # 设置外部访问地址为带/git子路径的形式
    external_url 'http://你的服务器IP/git'
    # 让GitLab内置Nginx监听8080端口,不和主Nginx抢占80端口
    nginx['listen_port'] = 8080
    
  • 保存退出后,重新配置并重启GitLab:
    sudo gitlab-ctl reconfigure
    sudo gitlab-ctl restart
    

测试GitLab内部访问:访问http://localhost:8080/git,确认能正常打开GitLab页面。

3. 配置Node.js后端转发规则

假设你的Node.js后端运行在localhost:3000端口:

  • 如果后端代码本身处理/api路径请求,直接转发即可;如果后端仅处理根路径请求,需用Nginx去掉/api前缀(后续Nginx配置会加注释说明)。

4. 配置Nginx反向代理规则

编辑Nginx默认站点配置:

sudo nano /etc/nginx/sites-available/default

替换为以下内容(替换你的服务器IP为实际IP):

server {
    listen 80;
    server_name 你的服务器IP;

    # 转发/git路径请求到GitLab
    location /git {
        proxy_pass http://localhost:8080/git;
        # 传递必要请求头,保证GitLab正确识别请求来源
        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;
    }

    # 转发/api路径请求到Node.js后端
    location /api {
        proxy_pass http://localhost:3000;
        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;
        
        # 如果Node.js后端不需要/api前缀,解开下方注释(自动将/api/xxx转换为/xxx)
        # rewrite ^/api/(.*)$ /$1 break;
    }
}
  • 验证配置合法性:
    sudo nginx -t
    
  • 验证通过后重启Nginx:
    sudo systemctl restart nginx
    

5. 开放防火墙端口

确保服务器80端口对外开放(若之前开放过GitLab的80/443端口,可关闭,因为所有请求将通过Nginx的80端口转发):

sudo ufw allow 80/tcp
# 可选:关闭旧的GitLab端口
# sudo ufw delete allow 80/tcp
# sudo ufw delete allow 443/tcp

测试访问

现在可以在浏览器验证:

  • http://你的服务器IP/git:正常打开GitLab页面
  • http://你的服务器IP/api:正常访问Node.js后端接口

内容的提问来源于stack exchange,提问作者timo.js

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:54:29