422无法处理的实体,JS文件,gitlab 8.17,apache ssl
问题描述:
昨天在ubuntu 16.04上安装了一个新的gitlab 8.17.0安装,并将它配置为像我记录的那个旧的。我正在运行一个允许作为代理加密的apache2。它看起来好像一切运行良好,但几个JS文件没有加载。我得到 “422无法处理的实体” HTTPS在422无法处理的实体,JS文件,gitlab 8.17,apache ssl
- 域/资产/的WebPack /应用XXX.js
- 域/资产/的WebPack/lib_dX.js
- 域/资产/的WebPack /用户-X的.js
- 域/资产/的WebPack/lib_d3-X.js
- 域/资产/的WebPack /用户-X.js
/etc/gitlab/gitlab.rb
external_url 'https://gitlab.example.com'
nginx['listen_address'] = 'localhost'
nginx['listen_port'] = 8080
nginx['listen_https'] = false
web_server['external_users'] = ['www-data']
nginx['enable'] = false
/etc/apache2/sites-available/gitlab.example.com.conf
<VirtualHost *:80>
ServerName gitlab.example.com
ServerAdmin [email protected]
ErrorLog /var/log/apache2/gitlab.example.com/error.log
CustomLog /var/log/apache2/gitlab.example.com/access.log combined
Redirect 301/https://gitlab.example.com/
</VirtualHost>
<VirtualHost *:443>
ServerName gitlab.example.com
ServerAdmin [email protected]
ErrorLog /var/log/apache2/gitlab.example.com/error.log
CustomLog /var/log/apache2/gitlab.example.com/access.log combined
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
ProxyPreserveHost On
ProxyPass/http://localhost:8080/
ProxyPassReverse/http://localhost:8080/
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/gitlab.example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/gitlab.example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/gitlab.example.com/chain.pem
<Proxy http://localhost:8080/>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
有没有人有想法来解决这个问题?
谢谢!我祝你周日愉快。
答
我与服务提到的静态文件,但在nginx代理后面有同样的问题。在/var/log/gitlab/gitlab-rails/production.log文件存在错误:
Started GET "/assets/webpack/application-0b895f7016d93748393a-v2.js" for 127.0.0.1 at 2017-03-05 11:14:21 +0100
Processing by ApplicationController#route_not_found as JS
Parameters: {"unmatched_route"=>"assets/webpack/application-0b895f7016d93748393a-v2"}
Security warning: an embedded <script> tag on another site requested protected JavaScript.
If you know what you're doing, go ahead and disable forgery protection on this action to
permit cross-origin JavaScript embedding.
Completed 422 Unprocessable Entity in 28ms (ActiveRecord: 1.8ms)
ActionController::InvalidCrossOriginRequest (Security warning: an embedded
<script> tag on another site requested protected JavaScript. If you know
what you're doing, go ahead and disable forgery protection on this action to
permit cross-origin JavaScript embedding.):
lib/gitlab/middleware/multipart.rb:93:in `call'
lib/gitlab/request_profiler/middleware.rb:14:in `call'
lib/gitlab/middleware/go.rb:16:in `call'
在的/ opt/gitlab /嵌入式/服务/ gitlab护栏所以我修改/配置/环境/ production.rb:
config.action_controller.allow_forgery_protection = false
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_files = true
并重新启动gitlab(gitlab-CTL重启)。现在,它的工作原理,但我想我的服务器的安全性被削弱。
答
这是8.17版本中尚未解决的问题。
只需降级到8.16 sudo apt-get install gitlab-ce=8.16.6-ce.0
恭喜。我重新安装旧版本的gitlab。这是我的解决方案。现在一切都很好。另请参阅此问题:https://gitlab.com/gitlab-org/omnibus-gitlab/issues/2021 – Phillip