【问题标题】:subdomains + nginx + reverse proxy + jenkins + gitlab子域 + nginx + 反向代理 + jenkins + gitlab
【发布时间】:2017-11-28 21:46:24
【问题描述】:

在互联网上搜索有关如何运行网站 + jenkins + gitlab 的完整指南和说明:

  • Jenkins @ jenkins.domain.com
  • GitLab @ gitlab.domain.com
  • 静态网站@domain.com

即服务器上的特定服务并通过子域访问它们,我还没有找到并回答。

我们运行的是ubuntu,nginx,有一个域名example.com和一条A记录指向我们的ip地址111.111.111.111

我们可以看到nginx欢迎页面。

如何解析子域?在哪里创建它们? 我们的服务器可以成为DNS吗? 最终的 nginx conf 应该是什么?

这是错误的,因为它需要为静态网站提供服务并尝试为 jenkins 提供静态文件,这会导致 404。

server {
  access_log        logs/landing.access.log;
  server_name       example.com;
  proxy_set_header  X-Real-IP $remote_addr;
  proxy_set_header  Host $host;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

  location / {
    root /var/www/html/landing;
    index index.html;
  }

  location /app {
    proxy_pass      http://localhost:9981;
  }

  location ^~ /jenkins {
    proxy_pass          http://127.0.0.1:9990;
    proxy_read_timeout  90;

    # Fix the “It appears that your reverse proxy set up is broken" error.
    proxy_redirect      http://127.0.0.1:9990 $scheme://example.com;

    # Optionally, require HTTP basic auth.
    # auth_basic "Please authenticate to use Jenkins";
    # auth_basic_user_file /opt/nginx/htpasswd;
  }
}

那么应该有另一个服务器块吗?

server {
  access_log        logs/jenkins.access.log;
  server_name       jenkins example.com;
  proxy_set_header  X-Real-IP $remote_addr;
  proxy_set_header  Host $host;
  proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

  proxy_pass          http://127.0.0.1:9990;
}

但是这个给出 404 的原因不同,我假设这第二个块与第一个块发生冲突,因为我试图通过 example.com 而不是 subdomain.example.com 访问它。并且 subdomain.example.com 没有解析。

【问题讨论】:

    标签: ubuntu nginx jenkins server dns


    【解决方案1】:

    你有几个不同的问题。首先是 DNS 相关问题。如果您有 domain.tld,那么您可以去找管理该域 DNS 的人,并添加指向您的 nginx 服务器的 CNAMEA 记录。

    至于您的 Jenkins nginx 设置。我会创建一个像jenkins.domain.tld.conf 这样的新文件并放入我从here 复制的文件

    server {
    
        listen 80;
        server_name jenkins.domain.tld;
    
        location / {
    
          proxy_set_header        Host $host:$server_port;
          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://127.0.0.1:8080;
          proxy_read_timeout  90;
    
          proxy_redirect      http://127.0.0.1:8080 https://jenkins.domain.tld;
    
          # Required for new HTTP-based CLI
          proxy_http_version 1.1;
          proxy_request_buffering off;
          # workaround for https://issues.jenkins-ci.org/browse/JENKINS-45651
          add_header 'X-SSH-Endpoint' 'jenkins.domain.tld:50022' always;     
        }
      }
    

    对于每个子域,请转到 Google 并搜索 service nginx,您应该会找到有关如何设置它的建议。

    【讨论】:

    • 您的域名服务器只会指向每个子域的 nginx 服务器。
    • 我是否必须在任何地方定义子域,否则它们会开箱即用?如果我将它们写在 nginx 的服务器块中?
    • 您为每个子域服务器块定义server_name sub.domain.tld;,只要 DNS 指向该子域的 nginx 服务器,那么 nginx 就会处理它。如果您没有设置服务器块,则会转到默认服务器块。
    • 但这意味着我也必须创建子域?我怎么做?在哪里?我只有 domain.com A 111.111.111.111 的记录
    • 已经在答案中“如果您有 domain.tld,那么您去找管理该域 DNS 的任何人并添加指向您的 nginx 服务器的 CNAMEA 记录。 "
    猜你喜欢
    • 2021-12-18
    • 2019-04-16
    • 1970-01-01
    • 2022-06-23
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2015-02-12
    相关资源
    最近更新 更多