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

如何修改Jenkins访问URL?EC2实例下Nginx配置问题

解决Jenkins通过域名/子域名访问的Nginx配置问题

方案一:通过子域名 jenkins.mydnsname.com 访问

这种方式与Django应用域名完全分离,逻辑更清晰,配置步骤如下:

  1. 配置DNS解析
    将子域名 jenkins.mydnsname.com 指向你的EC2实例公网IP,可通过nslookup jenkins.mydnsname.com验证解析是否生效。

  2. 添加Nginx Server块
    在Nginx配置目录(通常为/etc/nginx/sites-available/)创建单独的Jenkins配置文件,或在现有配置中添加以下server块:

    server {
        listen 80;
        server_name jenkins.mydnsname.com;
    
        location / {
            sendfile off;
            proxy_pass http://localhost:8080;  # 用localhost替代公网IP,避免不必要的跨网络请求
            proxy_redirect default;
            proxy_http_version 1.1;
    
            # 上传大小限制
            client_max_body_size 10m;
            client_body_buffer_size 128k;
    
            # 超时设置
            proxy_connect_timeout 90;
            proxy_send_timeout 90;
            proxy_read_timeout 90;
    
            proxy_buffering off;
            proxy_request_buffering off;
            proxy_set_header Connection "";
    
            # 传递必要请求头,确保Jenkins正确识别来源
            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. 验证并重启服务

    • 检查Nginx配置语法:sudo nginx -t
    • 重启Nginx:sudo systemctl restart nginx
    • 确保EC2安全组开放80端口(HTTP)的入站流量

方案二:通过路径 www.mydnsname.com/jenkins 访问

这种方式需同时调整Jenkins上下文路径和Nginx配置,否则会出现静态资源加载错误:

  1. 修改Jenkins上下文路径
    Jenkins默认使用根路径/,需配置为以/jenkins作为前缀运行:

    • 若为deb包安装,编辑/etc/default/jenkins,修改JAVA_ARGS:
      JAVA_ARGS="-Djava.awt.headless=true --prefix=/jenkins"
      
    • 若用systemd管理,编辑/usr/lib/systemd/system/jenkins.service,修改ExecStart行:
      ExecStart=/usr/bin/java -Djava.awt.headless=true --prefix=/jenkins -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080
      
    • 重启Jenkins:sudo systemctl daemon-reload && sudo systemctl restart jenkins
  2. 更新Nginx Location配置
    在Django应用对应的Nginx server块中,替换原location /jenkins配置为:

    location /jenkins {
        sendfile off;
        proxy_pass http://localhost:8080/jenkins;  # 必须与Jenkins的prefix一致,末尾保留/jenkins
        proxy_redirect default;
        proxy_http_version 1.1;
    
        client_max_body_size 10m;
        client_body_buffer_size 128k;
    
        proxy_connect_timeout 90;
        proxy_send_timeout 90;
        proxy_read_timeout 90;
    
        proxy_buffering off;
        proxy_request_buffering off;
        proxy_set_header Connection "";
    
        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. 验证并重启服务

    • 检查Nginx配置:sudo nginx -t
    • 重启Nginx:sudo systemctl restart nginx

常见问题排查

  • 若配置后仍无法访问,查看Nginx错误日志:sudo tail -f /var/log/nginx/error.log
  • 查看Jenkins日志确认启动状态:sudo tail -f /var/log/jenkins/jenkins.log
  • 确认EC2安全组允许80端口的入站流量
  • 等待DNS解析生效(可能需要数分钟)

内容的提问来源于stack exchange,提问作者Anandu BS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:25:18