我在nginx['enable_non_ssl']=true
文件中设置/etc/opscode/chef-server.rb
并运行chef-server-ctl reconfigure
但是当我尝试为主厨卷曲http端口时,我仍然会获得重定向设置。请参阅以下错误。
我的chef-server.rb
文件:
cat /etc/opscode/chef-server.rb
nginx['enable_non_ssl']=true
nginx['non_ssl_port']=80
运行重新配置:
chef-server-ctl reconfigure
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>
如何让厨师服务器正常工作?
答案 0 :(得分:1)
注意强> 默认情况下,chef-server.rb文件不存在。要修改Chef服务器的设置,请在/ etc / opscode /目录中创建名为chef-server.rb的文件。
注意强> 此文件在以前版本的Enterprise Chef中命名为private-chef.rb。从Enterprise Chef升级到Chef服务器12后,将private-chef.rb文件符号链接到chef-server.rb。不推荐使用private-chef.rb文件,从Chef server 12开始。
nginx['enable_non_ssl']
用于允许端口80重定向到端口443.当此值设置为false时,允许前端硬件上的负载平衡器执行WebUI和API的SSL终止。默认值:false。
nginx['non_ssl_port']
WebUI和API绑定到非SSL连接的端口。默认值:80。使用nginx [&#39; enable_non_ssl&#39;]在此端口号上启用或禁用SSL重定向。设置为false以禁用非SSL连接。
因此,根据上述内容,我相信您需要在chef-server.rb
目录中编辑/创建/etc/opscode/
文件,然后运行chef-server-ctl reconfigure
。
答案 1 :(得分:1)
我在重新安装Chef Server(chef-manage v2.4.4
)
您可以通过阅读已部署的Chef服务器的更改日志来查看Chef Manage版本:http://your-chef-server.com/changelog
在专用服务器上安装了我的厨师服务器实例后,它可以正常使用SSL。
但我们的生产服务器部署在专用VLAN中的专用主机上,用户通过作为反向代理运行的nginx Web服务器访问服务或Web应用程序。
因此,为了将厨师服务器置于生产模式,我必须配置我的反向代理来代理请求:
这里是正确的请求/响应路由模式:
请求:
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
但是,与您一样,厨师服务器默认配置会强制SSL从反向代理重定向到vlan中的厨师主机。 它会导致无限重定向循环:
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 chef.vlan端。
普通方法是通过插入以下指令来编辑文件/opt/obscode.chef-server.rb
(如果它不存在则创建它):
nginx['enable_non_ssl']=true
并且可选地(因为这已经是默认值)以下一个:
nginx['non_ssl_port']=80
因此我们只需要来重新配置厨师服务器:
# chef-server-ctl reconfigure
但是厨师模板配方中有一个错误,它用于生成nginx confi文件。因此,当我们重新配置厨师服务器时,将忽略先前的指令。
所以无限循环停留在那里。
Bug Ticket:https://tickets.opscode.com/browse/CHEF-3999
此外,您还可以看到以下其他资源:
https://github.com/chef/omnibus-chef/pull/57
为了解决这个问题,我不得不从bug票中调整建议的解决方案。
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
我们必须修复它addind以下几行:
node.default [&#39; private_chef&#39;] [&#39; nginx的&#39;] [&#39; enable_non_ssl&#39;] =真
我们应该将它附加到以下块:
# 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
最后,我们必须通过重新配置厨师服务器从配方模板重新生成nginx配置文件:
# chef-server-ctl reconfigure
然后路线模式按预期工作。
享受!
答案 2 :(得分:0)
chef-server.rb文件中的更改使url成为http但是当我再次登录时提示https登录意味着;用户登录在http中为两次,在https中为一次。
请告诉我您是否有机会尝试此操作以及配置中的任何成功作为HTTP实例提前感谢。
答案 3 :(得分:0)
所以,我调查了这个问题,然后找到了:
除了Nginx之外,WebUI chef-manage使用Unicorn网络服务器,而App的属性为config.force_ssl = true,除非ENV [&#39; NO_SSL&#39;]。
因此,要禁用SSL,您需要传递env变量export NO_SSL=true
来运行WebUI的命令或运行脚本。