【问题标题】:Jenkins Https reverse proxy configuration is not working in centosJenkins Https 反向代理配置在 centos 中不起作用
【发布时间】:2021-12-23 05:00:36
【问题描述】:

我已经在centos中安装了nginx和jenkins服务器。我想用 https 连接我的詹金斯服务器。所以我已经配置了反向代理。但它不起作用,我收到以下错误

以下是我的配置值

文件 - /etc/nginx/sites-enabled/default

server {
listen 80;
return 301 https://$host$request_uri;

}

server {

    listen 443;
    server_name 134.68.44.235;

    ssl_certificate           /etc/nginx/cert.crt;
    ssl_certificate_key       /etc/nginx/cert.key;

    ssl on;
    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
    ssl_prefer_server_ciphers on;

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

    location / {

      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;

      # Fix the “It appears that your reverse proxy set up is broken" error.
      proxy_pass          http://localhost:8080;
      proxy_read_timeout  90;

      proxy_redirect      http://localhost:8080 https://134.68.44.235;
    }
  }

文件 /etc/default/jenkins

JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpListenAddress=127.0.0.1 --httpPort=$HTTP_PORT -ajp13Port=$AJP_PORT"

注意:我可以使用 http://134.68.44.235:8080 访问 jenkins 网站

但我无法使用 https 访问它,我安装了证书并按照步骤from this article 我不确定我错过了什么,任何人都请给我建议。

【问题讨论】:

    标签: nginx ssl jenkins https reverse-proxy


    【解决方案1】:

    下面的这个 sn-p 应该可以正常工作,您必须编辑内容部分以匹配您希望 Jenkins 为 Web UI 提供服务的 FQDN 或 IP,以及有效的 SSL CERT 路径和 SSL KEY 路径(如果需要)提供https。

    upstream app_server {
      server 127.0.0.1:8080 fail_timeout=3;
    }
    
    server {
      listen 80;
      server_name <FQDN OR IP>;
      return 301 https://$server_name$request_uri;
    }
    
    server {
      listen 443;
      server_name <FQDN OR IP>;
    
      ssl on;
      ssl_certificate      /<PATH>/<TO>/<YOUR SSL CERT>;
      ssl_certificate_key  /<PATH>/<TO>/<YOUR SSL KEY>;
      ssl_protocols        SSLv3 TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers          RC4:HIGH:!aNULL:!MD5;
      ssl_prefer_server_ciphers on;
      ssl_session_cache    shared:SSL:10m;
      ssl_session_timeout  10m;
    
      # Redirect any /* request to port 8080
      location / {
        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;
    
       if ($request_method = 'GET') {
         add_header 'Access-Control-Allow-Origin' '*';
         add_header 'Access-Control-Allow-Headers' '*';
         add_header 'Access-Control-Allow-Methods' 'GET, POST';
         add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range,Location';
       }
    
        proxy_redirect http:// https://;
        proxy_pass     http://app_server;
      }
    }
    

    【讨论】:

    • 非常感谢您提供详细信息和sn-p。快速澄清会非常有帮助,1)我使用上述配置的相同位置(启用站点/默认)对吗? 2) 我必须在 proxy_redirect http:// https:// 中给出什么值; proxy_pass app_server;它应该是我的 Jenkins 服务器的 localhost 还是 publicip?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    相关资源
    最近更新 更多