导航

    蓝鲸ROS机器人论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 热门
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision

    修复 Gitlab Web IDE 无法正常显示文件的问题

    技术交流
    1
    1
    1274
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • weijiz
      weijiz 最后由 weijiz 编辑

      在使用Gitlab时,如果使用的不是Gitlab自带的nginx服务器,那么很有可能在Gitlab的Web IDE上打开软件源文件会发现是空文件。即使你完全按照官方的说明配置nginx也还是会这样。因为官方的nginx配置文件已经4年没有更新了,很多配置已经不再适合。

      这个问题解决方法很简单,把Gitlab自带的nginx的配置文件复制到自己的nginx配置里面,稍作修改就可以了。Gitlab自带的nginx配置文件位于 /var/opt/gitlab/nginx/conf/gitlab-http.conf

      文件内容如下

      # This file is managed by gitlab-ctl. Manual changes will be
      # erased! To change the contents below, edit /etc/gitlab/gitlab.rb
      # and run `sudo gitlab-ctl reconfigure`.
      
      ## GitLab
      ## Modified from https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/support/nginx/gitlab-ssl & https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/support/nginx/gitlab
      ##
      ## Lines starting with two hashes (##) are comments with information.
      ## Lines starting with one hash (#) are configuration parameters that can be uncommented.
      ##
      ##################################
      ##        CHUNKED TRANSFER      ##
      ##################################
      ##
      ## It is a known issue that Git-over-HTTP requires chunked transfer encoding [0]
      ## which is not supported by Nginx < 1.3.9 [1]. As a result, pushing a large object
      ## with Git (i.e. a single large file) can lead to a 411 error. In theory you can get
      ## around this by tweaking this configuration file and either:
      ## - installing an old version of Nginx with the chunkin module [2] compiled in, or
      ## - using a newer version of Nginx.
      ##
      ## At the time of writing we do not know if either of these theoretical solutions works.
      ## As a workaround users can use Git over SSH to push large files.
      ##
      ## [0] https://git.kernel.org/cgit/git/git.git/tree/Documentation/technical/http-protocol.txt#n99
      ## [1] https://github.com/agentzh/chunkin-nginx-module#status
      ## [2] https://github.com/agentzh/chunkin-nginx-module
      ##
      ###################################
      ##         configuration         ##
      ###################################
      
      upstream gitlab-workhorse {
        server unix:/var/opt/gitlab/gitlab-workhorse/socket;
      }
      
      
      server {
        listen *:80;
      
      
        server_name bw-server;
        server_tokens off; ## Don't show the nginx version number, a security best practice
      
        ## Increase this if you want to upload large attachments
        ## Or if you want to accept large git objects over http
        client_max_body_size 0;
      
      
        ## Real IP Module Config
        ## http://nginx.org/en/docs/http/ngx_http_realip_module.html
      
        ## HSTS Config
        ## https://www.nginx.com/blog/http-strict-transport-security-hsts-and-nginx/
        add_header Strict-Transport-Security "max-age=31536000";
      
        ## Individual nginx logs for this GitLab vhost
        access_log  /var/log/gitlab/nginx/gitlab_access.log gitlab_access;
        error_log   /var/log/gitlab/nginx/gitlab_error.log;
      
        if ($http_host = "") {
          set $http_host_with_default "bw-server";
        }
      
        if ($http_host != "") {
          set $http_host_with_default $http_host;
        }
      
        ## If you use HTTPS make sure you disable gzip compression
        ## to be safe against BREACH attack.
      
      
        ## https://github.com/gitlabhq/gitlabhq/issues/694
        ## Some requests take more than 30 seconds.
        proxy_read_timeout      3600;
        proxy_connect_timeout   300;
        proxy_redirect          off;
        proxy_http_version 1.1;
      
        proxy_set_header Host $http_host_with_default;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header X-Forwarded-Proto http;
      
        location / {
          proxy_cache off;
          proxy_pass  http://gitlab-workhorse;
        }
      
        location /assets {
          proxy_cache gitlab;
          proxy_pass  http://gitlab-workhorse;
        }
      
        error_page 404 /404.html;
        error_page 422 /422.html;
        error_page 500 /500.html;
        error_page 502 /502.html;
        location ~ ^/(404|422|500|502)(-custom)?\.html$ {
          root /opt/gitlab/embedded/service/gitlab-rails/public;
          internal;
        }
      
      
      }
      

      稍作修改成下面这样

      # This file is managed by gitlab-ctl. Manual changes will be
      # erased! To change the contents below, edit /etc/gitlab/gitlab.rb
      # and run `sudo gitlab-ctl reconfigure`.
      
      ## GitLab
      ## Modified from https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/support/nginx/gitlab-ssl & https://gitlab.com/gitlab-org/gitlab-ce/blob/master/lib/support/nginx/gitlab
      ##
      ## Lines starting with two hashes (##) are comments with information.
      ## Lines starting with one hash (#) are configuration parameters that can be uncommented.
      ##
      ##################################
      ##        CHUNKED TRANSFER      ##
      ##################################
      ##
      ## It is a known issue that Git-over-HTTP requires chunked transfer encoding [0]
      ## which is not supported by Nginx < 1.3.9 [1]. As a result, pushing a large object
      ## with Git (i.e. a single large file) can lead to a 411 error. In theory you can get
      ## around this by tweaking this configuration file and either:
      ## - installing an old version of Nginx with the chunkin module [2] compiled in, or
      ## - using a newer version of Nginx.
      ##
      ## At the time of writing we do not know if either of these theoretical solutions works.
      ## As a workaround users can use Git over SSH to push large files.
      ##
      ## [0] https://git.kernel.org/cgit/git/git.git/tree/Documentation/technical/http-protocol.txt#n99
      ## [1] https://github.com/agentzh/chunkin-nginx-module#status
      ## [2] https://github.com/agentzh/chunkin-nginx-module
      ##
      ###################################
      ##         configuration         ##
      ###################################
      
      upstream gitlab-workhorse {
        server unix:/var/opt/gitlab/gitlab-workhorse/socket;
      }
      
      
      server {
        listen *:80;
      
      
        server_name git.bwbot.org;
        server_tokens off; ## Don't show the nginx version number, a security best practice
      
        ## Increase this if you want to upload large attachments
        ## Or if you want to accept large git objects over http
        client_max_body_size 0;
      
      
        ## Real IP Module Config
        ## http://nginx.org/en/docs/http/ngx_http_realip_module.html
      
        ## HSTS Config
        ## https://www.nginx.com/blog/http-strict-transport-security-hsts-and-nginx/
        add_header Strict-Transport-Security "max-age=31536000";
      
        ## Individual nginx logs for this GitLab vhost
        access_log  /var/log/gitlab/nginx/gitlab_access.log;
        error_log   /var/log/gitlab/nginx/gitlab_error.log;
      
        if ($http_host = "") {
          set $http_host_with_default "git.bwbot.org";
        }
      
        if ($http_host != "") {
          set $http_host_with_default $http_host;
        }
      
        ## If you use HTTPS make sure you disable gzip compression
        ## to be safe against BREACH attack.
      
      
        ## https://github.com/gitlabhq/gitlabhq/issues/694
        ## Some requests take more than 30 seconds.
        proxy_read_timeout      3600;
        proxy_connect_timeout   300;
        proxy_redirect          off;
        proxy_http_version 1.1;
      
        proxy_set_header Host $http_host_with_default;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Upgrade $http_upgrade;
        #proxy_set_header Connection $connection_upgrade;
        proxy_set_header X-Forwarded-Proto http;
      
        location / {
          proxy_cache off;
          proxy_pass  http://gitlab-workhorse;
        }
      
        location /assets {
          #proxy_cache gitlab;
          proxy_pass  http://gitlab-workhorse;
        }
      
        error_page 404 /404.html;
        error_page 422 /422.html;
        error_page 500 /500.html;
        error_page 502 /502.html;
        location ~ ^/(404|422|500|502)(-custom)?\.html$ {
          root /opt/gitlab/embedded/service/gitlab-rails/public;
          internal;
        }
      
      
      }
      
      

      把上面的host name改成自己的就可以了。然后把文件保存在/etc/nginx/sites-enabled。下面重启nginx服务就可以了。

      sudo nginx -s reload
      

      这样WebIDE的文件就可以正常显示了

      486fee1a-dc1e-492d-85ee-80fed890481d-image.png

      1 条回复 最后回复 回复 引用 0
      • 1 / 1
      • First post
        Last post
      Copyright © 2015-2023 BlueWhale community