使用Gitlab CE版已经有一年多了,期间一直在使用http://ip:port
的方式来进行访问。很明显,缺点有二:
- 没有使用https,安全性堪忧。
- 没有使用域名,看起来并不专业…(
初期使用的时候并不是没有考虑过这两个问题,但是网上的教程大多都是直接nginx配置反向代理,且没有https,(且大部分都长得一样,(╬▔皿▔)凸),所以按照他们的教程来,没有一次是成功的… 后来也就放弃了配置域名和https…
直到今天,决定再闯一次虎山,终于掌握了要点…啊~
修改Gitlab配置文件
假设你已经拥有一台服务器,一个域名,且已经解析到你使用的服务器上,你的服务器已经装好gitlab,而且可以正常使用ip地址进行访问。
vim /etc/gitlab/gitlab.rb
|
如果你还不会使用vim可以看看我写的另一篇博客《来自一个不喜欢用Vim的弱鸡程序员的Vim教程》。
external_url 'https://git.aaa.com'
|
这里是修改gitlab监听的外部nginx端口,端口号随意,只要别占用一些重要端口就可以。
nginx['listen_port'] = 8118
|
然后:wq
保存并退出
重新配置gitlab,然后重启gitlab服务
gitlab-ctl reconfigure gitlab-ctl restart
|
使用lnmp配置https
我这里lnmp版本为1.5。
至于怎么用lnmp配置https,网上教程已经满天飞了,我就不多废话了…
不过还是提两句:
编辑lnmp中的Nginx Vhost配置文件以进行反向代理
cd /usr/local/nginx/conf/vhost
|
你看到的格式应该如下:
server { listen 80; return 301 https://$host$request_uri; location / { } }
|
upstream git { server localhost:8118; }
server { listen 80; ... ... ... ...
|
好了,80端口的部分不用管,我们主要看443部分,也就是https部分
server里上面部分不用动,下面的location先全部删除
server { listen 443 ssl http2; server_name git.jacky97.top ; ssl_certificate ; ssl_certificate_key ; ssl_session_timeout 5m; ssl_protocols ; ssl_prefer_server_ciphers ; ssl_ciphers ; ssl_session_cache ; ssl_dhparam ; include rewrite/other.conf; include enable-php.conf; location / { client_max_body_size 512m; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffer_size 64k; proxy_buffers 32 32k; proxy_busy_buffers_size 128k; proxy_pass http://localhost:8118; index index.html index.htm; } }
|
如果出现http 502错误怎么办
cd /var/log
chmod -R 775 gitlab
|
Web IDE打不开怎么办
一般是出现Mixed Context
错误 —— https站引用了http资源。解决方法也很简单:
确认一下你的gitlab配置文件中外部链接是HTTPS
开头,且gitlab自带的监听https是关闭状态。
external_url 'https://git.aaa.com'
nginx['listen_https'] = false
|
完成后,重新配置、重启gitlab和lnmp,再设置一遍log文件的权限
gitlab-ctl reconfigure gitlab-ctl restart lnmp restart chmod -R 775 /var/log/gitlab
|
现在你就可以用https://git.aaa.com
来访问你的gitlab了!如果有任何问题,欢迎下面的评论区域告诉我!