如何为Jenkins设置Nginx反向代理

4smxwvx5  于 2023-08-03  发布在  Jenkins
关注(0)|答案(1)|浏览(137)

我是Nginx的初学者,我遇到了设置反向代理的问题。我的jenkins安装在192.168.0.37:8080,我的nginx安装在192.168.0.80。我想使用www.example.com访问jenkins192.168.0.80/jenkins。下面是我的/etc/nginx/conf.d/jenkins.conf内容:

upstream jenkins {
  keepalive 32; # keepalive connections
  server 192.168.0.37:8080; # jenkins ip and port
}

# Required for Jenkins websocket agents
map $http_upgrade $connection_upgrade {
  default upgrade;
  '' close;
}

server {
  listen          80;       # Listen on port 80 for IPv4 requests

  server_name     jenkins.example.com;  # replace 'jenkins.example.com' with your server domain name

  # this is the jenkins web root directory
  # (mentioned in the output of "systemctl cat jenkins")
  root            /var/cache/jenkins/war/;

  access_log      /var/log/nginx/jenkins.access.log;
  error_log       /var/log/nginx/jenkins.error.log;

  # pass through headers from Jenkins that Nginx considers invalid
  ignore_invalid_headers off;

  location ~ "^/static/[0-9a-fA-F]{8}\/(.*)$" {
    # rewrite all static files into requests to the root
    # E.g /static/12345678/css/something.css will become /css/something.css
    rewrite "^/static/[0-9a-fA-F]{8}\/(.*)" /$1 last;
  }

  location /userContent {
    # have nginx handle all the static requests to userContent folder
    # note : This is the $JENKINS_HOME dir
    root /var/lib/jenkins/;
    if (!-f $request_filename){
      # this file does not exist, might be a directory or a /**view** url
      rewrite (.*) /$1 last;
      break;
    }
    sendfile on;
  }

  location /jenkins {
      sendfile off;
      proxy_pass         http://jenkins;
      proxy_redirect     default;
      proxy_http_version 1.1;

      # Required for Jenkins websocket agents
      proxy_set_header   Connection        $connection_upgrade;
      proxy_set_header   Upgrade           $http_upgrade;

      proxy_set_header   Host              $http_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;
      proxy_max_temp_file_size 0;

      #this is the maximum upload size
      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; # Required for HTTP CLI commands
      proxy_set_header Connection ""; # Clear for keepalive
  }

}

字符串
当我尝试输入http://192.168.0.80/jenkins时,我得到404 Not Found。
我也尝试了不同的方法:

server {
    listen 80;
    server_name 192.168.0.80;

    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }

    location /jenkins/ {
        proxy_pass http://192.168.0.37:8080/;
        proxy_redirect off;
        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;
    }

    location /nexus/ {
        proxy_pass http://192.168.0.25:8081/;
        proxy_redirect off;
        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;
    }
}


在这种情况下,/nexus工作得很好,但/jenkins仍然返回404。两台机器都使用Ubuntu 22.04服务器。你知道我做错了什么吗
已尝试将--prefix=/jenkins添加到JENKINS_ARGS,但未发生任何更改

qyuhtwio

qyuhtwio1#

首先,您必须使用/jenkins上下文路径配置Jenkins。您可以通过传递启动参数--prefix=/jenkins来完成此操作。如果你在Docker上,你可以像下面这样传递它。

docker run --name myjenkins -p 8080:8080 -p 50000:50000 --env JENKINS_OPTS="--prefix=/jenkins" jenkins/jenkins:lts

字符串
否则,您可以在声明Jenkin服务之前导出以下env变量。

export JENKINS_OPTS="--prefix=/jenkins"


完成后,下面这样一个简单的Nginx规则应该对你有用。

server {
    listen 80;
    server_name jenkins.ycr.com;

    location /jenkins {
            proxy_pass  http://127.0.0.1:8080;
            proxy_redirect http://127.0.0.1:8080/ http://jenkins.ycr.com/;
        }
}

相关问题