我已经nginx['enable_non_ssl']=true
在/etc/opscode/chef-server.rb
文件中设置并运行,chef-server-ctl reconfigure
但是当我尝试为厨师卷曲http端口时,我仍然会得到重定向,这有点违反了此设置的目的。请参阅下面的错误。
我的chef-server.rb
档案:
猫/etc/opscode/chef-server.rb
nginx['enable_non_ssl']=true
nginx['non_ssl_port']=80
运行重新配置:
Chef-server-ctl重新配置
Starting Chef Client, version 12.0.3
resolving cookbooks for run list: ["private-chef::default"]
[2015-05-25T13:12:26+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-05-25T13:12:26+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
[2015-05-25T13:12:26+00:00] WARN: Cookbook 'local-mode-cache' is empty or entirely chefignored at /opt/opscode/embedded/cookbooks/local-mode-cache
....
显示我仍然被重定向的卷曲命令:
<html>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>openresty/1.7.10.1</center>
</body>
</html>
我如何才能使工作中的厨师服务器工作起来?
我在安装Chef Server(chef-manage v2.4.4
)时遇到了同样的问题
您可以通过阅读已部署的厨师服务器的更改日志来查看您的厨师管理版本:http(s)://your-chef-server.com/changelog
在专用服务器上安装我的Chef服务器实例后,它可以与SSL一起正常使用。
但是我们的生产服务器部署在专用VLAN中的专用主机上,并且用户通过作为反向代理运行的nginx Web服务器访问服务或Web应用程序。
因此,要使Chef服务器进入生产模式,我必须配置我的反向代理来代理请求:
这里是正确的请求/响应路由模式:
要求:
client 443 >> 443 chef.company.com (DNS: rev-proxy)
rev-proxy 80 >> 80 chef.vlan
回复:
rev-proxy 80 << 80 chef.vlan
client 443 << 443 chef.company.com
但是,像您一样,chef服务器的默认配置会强制将SSL从反向代理重定向到vlan中的chef主机。这会导致无限重定向循环:
client 443 >> 443 rev-proxy
proxy 80 >> 80 chef.vlan
client 80 << 80 chef.company.com (redirect to https://$host$request_uri)
client 443 >> 443 rev-proxy
proxy 80 >> 80 chef.vlan
client 80 << 80 chef.company.com (redirect to https://$host$request_uri)
...
client 443 >> 443 rev-proxy
proxy 80 >> 80 chef.vlan
client 80 << 80 chef.company.com (redirect to https://$host$request_uri)
...
因此,我们必须禁用SSL cook.vlan端。
在正常的方法是编辑文件/opt/obscode.chef-server.rb
(并创建它,如果它不存在),通过插入以下指令:
nginx['enable_non_ssl']=true
以及可选的(因为这已经是默认值)以下一项:
nginx['non_ssl_port']=80
因此,我们只需要重新配置Chef服务器:
# chef-server-ctl reconfigure
但是厨师模板配方中存在一个错误,该错误曾用于生成nginx confi文件。因此,当我们重新配置Chef服务器时,将忽略先前的指令。
因此,无限循环停留在那里。
此外,您还可以看到以下其他资源:
https://github.com/chef/omnibus-chef/pull/57
为了解决这种情况,我不得不从错误单中修改建议的解决方案。
root@chef-srv:~# find / -name nginx.conf
/opt/chef-manage/embedded/service/gem/ruby/2.2.0/gems/unicorn-4.9.0/examples/nginx.conf
/opt/opscode/embedded/service/gem/ruby/2.2.0/gems/unicorn-5.1.0/examples/nginx.conf
/opt/opscode/embedded/conf/nginx.conf
/var/opt/opscode/nginx/etc/nginx.conf
最后一个是嵌入式nginx conf文件。它包含以下集团代码,这是问题的根源:
# We support three options: serve nothing on non_ssl_port (80),
# redirect to https, or actually serve the API.
server {
listen 80;
access_log /var/log/opscode/nginx/rewrite-port-80.log;
return 301 https://$host$request_uri;
}
root@chef-srv:~# find / -name nginx.rb
/opt/chef-manage/embedded/cookbooks/omnibus-chef-manage/recipes/nginx.rb
/opt/chef-manage/embedded/cookbooks/cache/cookbooks/omnibus-chef-manage/recipes/nginx.rb
/opt/opscode/embedded/cookbooks/private-chef/recipes/nginx.rb
/var/opt/opscode/local-mode-cache/cookbooks/private-chef/recipes/nginx.rb
第三是生成嵌入式nginx配置的模板:
/opt/opscode/embedded/cookbooks/private-chef/recipes/nginx.rb
=== > /var/opt/opscode/nginx/etc/nginx.conf
我们必须对其进行修复,请添加以下几行:
node.default ['private_chef'] ['nginx'] ['enable_non_ssl'] = true
我们应该将其附加到以下块:
# Save node attributes back for use in config template generation
node.default['private_chef']['nginx']['ssl_certificate'] ||= ssl_crtfile
node.default['private_chef']['nginx']['ssl_certificate_key'] ||= ssl_keyfile
node.default['private_chef']['nginx']['ssl_dhparam'] ||= ssl_dhparam
因此,最终的块代码如下所示:
# nano /opt/opscode/embedded/cookbooks/private-chef/recipes/nginx.rb
:
# Save node attributes back for use in config template generation
node.default['private_chef']['nginx']['ssl_certificate'] ||= ssl_crtfile
node.default['private_chef']['nginx']['ssl_certificate_key'] ||= ssl_keyfile
node.default['private_chef']['nginx']['ssl_dhparam'] ||= ssl_dhparam
node.default['private_chef']['nginx']['enable_non_ssl']=true
最后,我们必须通过重新配置Chef服务器,从配方模板重新生成nginx配置文件:
# chef-server-ctl reconfigure
然后,路由模式将按预期工作。
享受!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句