Navigation

    蓝鲸ROS机器人论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision

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

    技术交流
    1
    1
    390
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • weijiz
      weijiz last edited by 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 Reply Last reply Reply Quote 0
      • First post
        Last post
      Copyright © 2015-2021 BlueWhale community