背景:
最近用為企業(yè)部署了Gitlab用來存放代碼用抒巢。
Gitlab是一個(gè)企業(yè)能夠很方便的管理代碼的工具资柔,官方提供的安裝配置也很方便的部署Gitlab 到企業(yè)的服務(wù)器
Gitlab本身自帶了Nginx,并且如果不改動(dòng)任何配置的話签餐,Gitlab默認(rèn)會(huì)部署到80端口弄诲。
由于企業(yè)在這個(gè)服務(wù)器有很多其他的web服務(wù)愚战,要做到Gitlab和其他的web服務(wù)共存,那么需要做一點(diǎn)點(diǎn)修改
方案:
- 方法一:干掉Gitlab的內(nèi)置Nginx齐遵,然后在外部安裝nginx服務(wù)器寂玲,并且代理了Nginx的socket端口。
- 方法二:在外部的Nginx服務(wù)器做代理轉(zhuǎn)發(fā)洛搀,這個(gè)方法不需要禁用Gitlab本身的Nginx服務(wù)敢茁,只需要在外部的Nginx做相關(guān)的改動(dòng)即可。
(由于不想改動(dòng)太多留美,以及涉及到集成化的原因,就不打算動(dòng)Gitlab內(nèi)部的Nginx伸刃,方案二也就是本文介紹的方法谎砾,就是用我們外部的Nginx去代理轉(zhuǎn)發(fā)請(qǐng)求到Gitlab的服務(wù)端口)
實(shí)現(xiàn)(方案二):
- 修改Gitlab的配置文件:
- 默認(rèn)安裝的Gitlab,配置文件在 :
/etc/gitlab/gitlab.rb
- 修改Gitlab的監(jiān)聽端口號(hào):
nginx['listen_port'] = 端口號(hào)
- 修改Gitlab的域名:
external_url '域名'
(注意捧颅,此處的域名不需要帶上端口號(hào)景图,因?yàn)檎?qǐng)求是被我們前級(jí)的Nginx處理的,然后把請(qǐng)求轉(zhuǎn)發(fā)過來這個(gè)端口碉哑,對(duì)外訪問而言挚币,還是我們的前級(jí)Nginx的80端口) - 最后執(zhí)行
gitlab-ctrl reconfigure
讓配置生效
- 默認(rèn)安裝的Gitlab,配置文件在 :
- 配置Nginx服務(wù)器:
upstream git{
# 域名對(duì)應(yīng) gitlab配置中的 external_url
# 端口對(duì)應(yīng) gitlab 配置中的 nginx['listen_port']
server 域名:端口;
}
server{
listen 80;
# 此域名是提供給最終用戶的訪問地址
server_name 域名;
location / {
# 這個(gè)大小的設(shè)置非常重要,如果 git 版本庫(kù)里面有大文件扣典,設(shè)置的太小妆毕,文件push 會(huì)失敗,根據(jù)情況調(diào)整
client_max_body_size 50m;
proxy_redirect off;
#以下確保 gitlab中項(xiàng)目的 url 是域名而不是 http://git贮尖,不可缺少
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 反向代理到 gitlab 內(nèi)置的 nginx
proxy_pass http://git;
index index.html index.htm;
}
}