Использование nginx gitlab для обслуживания другого приложения
Привет, я установил Gitlab, используя this
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#installation
теперь я хочу использовать nginx для обслуживания другого контента, кроме приложения gitlab как я могу это сделать!--4-->
- где файлы конфигурации, которые мне нужно изменить
- как я могу указать каталог, как /var / www, чтобы nginx знал, что это корень для другого приложения.
обновление(забыл чтобы упомянуть, что я запускаю это под Red Hat 6.5, Debian / Ubuntu solution welcome)
6 ответов
решение vndr выше будет работать, но на https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md, он сказал:
вставка пользовательских настроек в конфигурацию NGINX
Если вам нужно добавить пользовательские настройки в конфигурацию NGINX, например чтобы включить существующие блоки сервера,можно использовать следующий параметр.
пример: включите каталог для сканирования дополнительных файлов конфигурации nginx ['custom_nginx_config'] = "включить /etc/nginx/conf.д.*/conf;"
Итак, давайте проверим ваши /опт/гитлаб/встроенные/кулинарные книги/гитлаб/шаблоны/по умолчанию/с nginx.conf.erb, чтобы увидеть, содержит ли он: (похоже на текущий gitlab-7.5.3_омнибус.5.2.1.СИ-1.el6.x86_64.rpm не включает его)
если нет, то просто добавьте его над строкой добавить ; как:
<%= @custom_nginx_config %>
include <%= @gitlab_http_config %>;
затем откройте файл /etc/gitlab / gitlab.РБ добавить: nginx ['custom_nginx_config'] = "включить /etc/nginx/conf.д.*/conf;"
мы можем сделать это, просто просто добавить: включить /etc/nginx / conf.д.*/conf; вместо
затем создайте нормальный nginx .файлы conf в /etc/nginx / conf.D / и GitLab-ctl реконфигурировать
здесь я использую
- gitlab.example.com to serve gitlab.example.com over https.
- example.com over http to serve another content other than gitlab application.
GitLab, установленный из пакета deb, использует chef для предоставления ngnix, поэтому вам нужно изменить рецепты шеф-повара и добавить новый шаблон vhost в каталог кулинарных книг шеф-повара
здесь вы можете найти все книги рецептов шеф-повара : / opt/gitlab / встроенные / кулинарные книги/gitlab/
открыть /опт/гитлаб/встроенные/кулинарные книги/гитлаб/рецепты/с 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
затем в папку с шаблоном(/опт/гитлаб/встроенные/кулинарные книги/гитлаб/шаблоны/по умолчанию), создать файл шаблона с nginx виртуального хоста( сервера 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;
}
вы должны установить nginx ['redirect_http_to_https'] = false в (в/etc/гитлаб/гитлаб.rb):
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
добавить добавить ; into/opt/gitlab/embedded/cookbooks/GitLab/шаблоны/по умолчанию / nginx.conf.Эрб :
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
даже если вы действительно можете это сделать, лучше использовать отдельный сервер nginx верхнего уровня для обслуживания nginx gitlab и другого пользовательского контента. Nginx Gitlab может изменить его конфигурацию в любое время, и он может сломать ваш пользовательский контент. Кроме того, отдельный nginx полностью Ваш для настройки.
просто установите эти два экземпляра на разные порты и прокси-сервер GitLab nginx с верхним. Причина, это будет накладные расходы, но совершенно незначительные один.
Я пробовал оба подхода, и тот, который работал для меня, должен был поставить чистый NGINX поверх встроенного gitlab. его более легко / удобно в долгосрочной перспективе.
в зависимости от ваших потребностей, вот некоторые важно вещей, которые должны быть на месте:
- настройки DNS вашей сети / маршрутизатора / etc. (иначе это не сработает, так как конфигурации здесь основаны на именах серверов,)
- моя настройка тривиальна один сервер, несколько сайтов, размещенных на одном IP-сервере, и я фильтрую, называя приложения через фильтр имен NGINX.
вот основные шаги, чтобы следовать, имейте в виду, что в зависимости от ваших потребностей это может означать более тонкая вокруг, и это Ubuntu Server 14.04 .
-
сначала деактивируйте основной Nginx (в комплекте с omnibus) edit / etc/gitlab / gitlab.rb
nginx['enable'] = false ci_nginx['enable'] = false
- теперь вы можете бесплатно установить чистый экземпляр nginx и.
-
Что касается предыдущего шага: иногда установщик не создает сайты с поддержкой/ и сайты-доступны/ папки, создайте их и обязательно включите их в /и т. д./nginx/nginx в.conf
include /etc/nginx/sites-enabled/*.conf;
- в общем nginx workflow-процесс вы включаете свои конфигурации сайта всайты-доступны/ а затем, когда вы готовы / счастливы, вы делаете ссылку на сайты с поддержкой/ папка и перезагрузите nginx, чтобы изменения были эффективными
- добавьте конфигурацию Gitlab в Nginx сайт-доступен/ папку
вот мой 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;
}
}
вы можете найти более подробную информацию о конфигурации здесь больше опции
-
перезагрузка / перезагрузка nginx
sudo service nginx restart
-
перезапустите GitLab omnibus и проверьте конфигурацию Gitlab
sudo gitlab-ctl reconfigure
sudo gitlab-ctl tail
(просто чтобы проверить, что-то не так в вашей конфигурации gitlab) -
добавить дополнительные (столько, сколько вам нравится) конфигурации сервера, которые вам нужны в / etc/nginx/сайты-доступно/ и в конечном итоге, когда счастлив / готов добавить ссылку на / etc/nginx/sites-включено/
вот еще один пример другого приложения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 или любыми другими приложениями.
Так что, надеюсь, это поможет кому-нибудь там.
поскольку я не хотел менять конфигурацию для сервера gitlab Nginx или устанавливать / настраивать другой Nginx и убедиться, что gitlab переживет крупное обновление, я пришел к решению ниже для пакет омнибусов Gitlab.
также согласно
Gitlab:Ningx = > вставка пользовательских настроек в конфигурацию nginx
отредактируйте /etc/gitlab / gitlab.rb вашего gitlab:
nano /etc/gitlab/gitlab.rb
и sroll в с nginx['custom_nginx_config'] и изменить как ниже не забудьте раскомментировать
# 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.д:
gitlab-ctl restart nginx
для проверки ошибки nginx log:
tail -f /var/log/gitlab/nginx/error.log
и Смотри https://stackoverflow.com/a/39695791/6821811 для перенаправления на другой сервер приложений.
эти " другие материалы "объявляются в NGiNX с"Сервер Блоки".
в Гитлаб в /etc/nginx/sites-available/gitlab
(по документация, и symlined в [/etc/nginx/sites-enabled][3]
).
Вы можете добавить в него другие серверные блоки, похожие на этот (Возможно, вам придется выбрать другой номер порта), как показано в этом процессе (обновляется!--18-->здесь для 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
директива должна ссылаться на корневую папку вашего веб-приложения (/var/www
или, скорее, вложенной /var/www
).
этот серверный блок совершенно отделен от любой конфигурации GitLab.