subdomains + nginx + reverse proxy + jenkins + gitlab

时间:2017-11-28 21:46:25

标签: ubuntu nginx jenkins server dns

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

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

即服务器上的特定服务,并且可以通过子域访问它们,我找不到并回答。

我们正在运行ubuntu,nginx并拥有一个域名example.com和一个指向我们的IP地址的A记录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未解析。

1 个答案:

答案 0 :(得分:1)

嗯,你有几个不同的问题。第一个DNS相关问题。如果您有domain.tld,那么您将转到管理该域的DNS的任何人,并添加指向CNAME服务器的Anginx记录。

至于您的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并搜索服务 nginx,您应该找到有关如何设置的建议。