您好我已经使用这个安装了Gitlab https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#installation
现在我想使用nginx来提供除gitlab应用程序之外的其他内容 我怎么能这样做
更新(忘了提到我在Red Hat 6.5,Debian / Ubuntu解决方案欢迎下运行这个)
答案 0 :(得分:7)
vndr的上述解决方案可行,但在https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md上,它说:
将自定义设置插入NGINX配置
例如,如果您需要将自定义设置添加到NGINX配置中 要包含现有服务器块,您可以使用以下设置。
示例:包含扫描其他配置文件的目录nginx ['custom_nginx_config'] =“include /etc/nginx/conf.d / * .conf;”
那么让我们检查你的/opt/gitlab/embedded/cookbooks/gitlab/templates/default/nginx.conf.erb,看看它是否包含:<%= @custom_nginx_config%> (看起来当前的gitlab-7.5.3_omnibus.5.2.1.ci-1.el6.x86_64.rpm不包含它)
如果没有,那么只需将其添加到 include<%= @gitlab_http_config%>; 之类的行上方:
<%= @custom_nginx_config %>
include <%= @gitlab_http_config %>;
然后打开/etc/gitlab/gitlab.rb添加: nginx ['custom_nginx_config'] =“include /etc/nginx/conf.d / * .conf;”
我们可以简单地添加: include /etc/nginx/conf.d / * .conf; 而不是&lt;%= @custom_nginx_config%&gt;
然后在/etc/nginx/conf.d/和gitlab-ctl重新配置中创建普通的nginx .conf文件
答案 1 :(得分:6)
我在这里使用
- gitlab.example.com to serve gitlab.example.com over https.
- example.com over http to serve another content other than gitlab application.
从deb软件包安装的Gitlab正在使用chef来配置ngnix,所以你必须修改厨师收件人并将新的vhost模板添加到chef cookbooks目录中
您可以在这里找到所有厨师食谱: 的/ opt / gitlab /嵌入/食谱/ gitlab /
开 /opt/gitlab/embedded/cookbooks/gitlab/recipes/nginx.rb
变化:
nginx_vars = node['gitlab']['nginx'].to_hash.merge({
:gitlab_http_config => File.join(nginx_etc_dir, "gitlab-http.conf"),
})
为:
nginx_vars = node['gitlab']['nginx'].to_hash.merge({
:gitlab_http_config => File.join(nginx_etc_dir, "gitlab-http.conf"),
:examplecom_http_config => File.join(nginx_etc_dir, "examplecom-http.conf"),
})
将其添加到同一个文件中:
template nginx_vars[:examplecom_http_config] do
source "nginx-examplecom-http.conf.erb"
owner "root"
group "root"
mode "0644"
variables(nginx_vars.merge(
{
:fqdn => "example.com",
:port => 80,
}
))
notifies :restart, 'service[nginx]' if OmnibusHelper.should_notify?("nginx")
end
然后在模板目录(/ opt / gitlab / embedded / cookbooks / gitlab / templates / default)中,创建nginx vhost模板文件(nginx-examplecom-http.conf.erb)并在其中添加:
server {
listen <%= @listen_address %>:<%= @port %>;
server_name <%= @fqdn %>;
root /var/www/example.com;
access_log <%= @log_directory %>/examplecom_access.log;
error_log <%= @log_directory %>/examplecom_error.log;
location /var/www/example.com {
# serve static files from defined root folder;.
# @gitlab is a named location for the upstream fallback, see below
try_files $uri $uri/index.html $uri.html;
}
error_page 502 /502.html;
}
你必须在(/etc/gitlab/gitlab.rb)中设置 nginx [&#39; redirect_http_to_https&#39;] = false :
external_url "https://gitlab.example.com"
gitlab_rails['gitlab_email_from'] = "info@example.com"
gitlab_rails['gitlab_support_email'] = "support@example.com"
nginx['redirect_http_to_https'] = false
nginx['ssl_certificate'] = "/etc/gitlab/ssl/ssl-unified.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/ssl.key"
gitlab_rails['gitlab_default_projects_limit'] = 10
将 include&lt;%= @examplecom_http_config%&gt ;; 添加到/opt/gitlab/embedded/cookbooks/gitlab/templates/default/nginx.conf.erb:
http {
sendfile <%= @sendfile %>;
tcp_nopush <%= @tcp_nopush %>;
tcp_nodelay <%= @tcp_nodelay %>;
keepalive_timeout <%= @keepalive_timeout %>;
gzip <%= @gzip %>;
gzip_http_version <%= @gzip_http_version %>;
gzip_comp_level <%= @gzip_comp_level %>;
gzip_proxied <%= @gzip_proxied %>;
gzip_types <%= @gzip_types.join(' ') %>;
include /opt/gitlab/embedded/conf/mime.types;
include <%= @gitlab_http_config %>;
include <%= @examplecom_http_config %>;
}
完成所有这些更改后:
gitlab-ctl reconfigure
gitlab-ctl restart
答案 2 :(得分:4)
由于我不想更改gitlab Nginx服务器的配置,也不想安装/配置另一个Nginx并确保gitlab能够在重大更新后继续存在,因此我在 Gitlab Omnibus软件包下面找到了解决方案
也按照
Gitlab:Ningx =>Inserting custom settings into the NGINX config
编辑你的gitlab的/etc/gitlab/gitlab.rb:
nano /etc/gitlab/gitlab.rb
并滚动到nginx [&#39; custom_nginx_config&#39;]并修改如下,确保取消注释
# Example: include a directory to scan for additional config files
nginx['custom_nginx_config'] = "include /etc/nginx/conf.d/*.conf;"
创建新的配置目录:
mkdir -p /etc/nginx/conf.d/
nano /etc/nginx/conf.d/new_app.conf
并将内容添加到新配置中:/etc/nginx/conf.d/new_app.conf
server {
listen *:80;
server_name new_app.mycompany.com;
server_tokens off;
access_log /var/log/new_app_access.log;
error_log /var/log/new_app_error.log;
root /var/www/html/new_app/;
index index.html index.htm;
}
并重新配置gitlab以插入新设置
gitlab-ctl reconfigure
在更改配置后重新启动nginx或在/etc/nginx/conf.d中添加更多配置:
gitlab-ctl restart nginx
检查nginx错误日志:
tail -f /var/log/gitlab/nginx/error.log
并查看https://stackoverflow.com/a/39695791/6821811以重定向到其他应用程序服务器。
答案 3 :(得分:3)
我尝试了两种方法,而对我有用的方法是将一个干净的NGINX放在gitlab内置的一个上面。从长远来看,它更容易/方便。
根据您的需要,这里有一些至关重要的事项必须先到位:
以下是要遵循的主要步骤,请记住,根据您的需要,这可能意味着更多的调整,这也是 Ubuntu Server 14.04 。
首先停用主要的Nginx(与综合捆绑的那个)编辑 /etc/gitlab/gitlab.rb
nginx['enable'] = false
ci_nginx['enable'] = false
关于上一步:有时安装程序不会创建网站启用/ 和网站可用/ 文件夹,创建它们并确保将它们包含在 /etc/nginx/nginx.conf 文件中
include /etc/nginx/sites-enabled/*.conf;
这是我的conf:
`upstream gitlab-workhorse {
server unix:/var/opt/gitlab/gitlab-workhorse/socket;
}
## Normal HTTP host
server {
## Either remove "default_server" from the listen line below,
## or delete the /etc/nginx/sites-enabled/default file. This will cause gitlab
## to be served if you visit any address that your server responds to, eg.
## the ip address of the server (http://x.x.x.x/)n 0.0.0.0:80 default_server;
#listen 0.0.0.0:80 default_server;
listen 0.0.0.0:80 ;
# listen [::]:80 default_server;
server_name gitlab.mycompany.com; ## Replace this with something like gitlab.example.com
server_tokens off; ## Don't show the nginx version number, a security best practice
root /opt/gitlab/embedded/service/gitlab-rails/public;
## See app/controllers/application_controller.rb for headers set
## Individual nginx logs for this GitLab vhost
access_log /var/log/nginx/gitlab.access.log;
error_log /var/log/nginx/gitlab.error.log;
location / {
client_max_body_size 0;
gzip off;
## https://github.com/gitlabhq/gitlabhq/issues/694
## Some requests take more than 30 seconds.
proxy_read_timeout 300;
proxy_connect_timeout 300;
proxy_redirect off;
proxy_http_version 1.1;
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_pass http://gitlab-workhorse;
}
}
您可以在more options
中找到有关配置的更多详细信息重新启动/重新加载nginx
sudo service nginx restart
重新启动gitlab omnibus并检查您的Gitlab配置
sudo gitlab-ctl reconfigure
sudo gitlab-ctl tail
(只是为了检查你的gitlab配置是否有问题)
在 / etc / nginx / sites-available / 中添加额外的(根据需要)您需要的服务器配置,最后在happy / ready时添加指向的链接的/ etc / nginx的/网站启用/ 强>
这是另一个应用程序的另一个例子
upstream app_server {
server 127.0.0.1:9080 fail_timeout=0;
}
server {
listen 80;
server_name jenkins.mycompany.com;
access_log /var/log/nginx/jenkins.access.log;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://app_server;
break;
}
}
}
请记住始终重启/重新加载nginx,以便您看到更改。
sudo service nginx restart
检查日志以防出现问题 /var/log/nginx/anysites*.log
请注意,我们在这里使用上游有不同的端口和名称(它们存在/是真实的/在您公司的域中注册)都指向相同的IP地址,这意味着NIGNX会找到相同的IP地址,但由于上游的端口不同而不会中断,这非常重要
这就是我的配置现在如何工作我没有与Gitlab或任何其他应用程序有任何问题 所以希望这会帮助那里的任何人。
答案 4 :(得分:2)
这些“其他内容”在NGiNX中声明为“ Server Blocks ”。
GitLab一个位于/etc/nginx/sites-available/gitlab
(根据documentation,并且在[/etc/nginx/sites-enabled][3]
中包含在内)。
您可以在其中添加其他服务器块,类似于此(您可能必须选择不同的端口号),如图所示in this process(已更新here for Ubuntu 14.04)
server {
listen 80; ## listen for ipv4; this line is default and implied
#listen [::]:80 default ipv6only=on; ## listen for ipv6
root /var/www/example.com/public_html;
index index.html index.htm;
# Make site accessible from http://localhost/
server_name example.com;
}
root
指令应引用您的webapp的根文件夹(/var/www
或更可能是/var/www
的子文件夹)。
该服务器块与任何GitLab配置完全分开。