If the following error is faced in chef-server, version 12, then do the following to fix the issue.
ERROR: Server returned error 500 for https://127.0.0.1/users
open the file /opt/opscode/embedded/cookbooks/private-chef/templates/default/oc_erchef.config.erb in vi editor and go to line 220.
Replace the following line :
{s3_url, "<%= node['private_chef']['nginx']['x_forwarded_proto'] %>://<%= @helper.vip_for_uri('bookshelf') %>"},
with
{s3_url, "https://private-chef.opscode.piab:4000"},
and then run chef-server-ctl reconfigure.
Reason and Solution:
nginx will listen on port 4000 for HTTPS connections and not the default port of 443.
During cookbook uploads, the opscode-erchef service talks to bookshelf via the s3_url in its configuration file (/var/opt/opscode/opscode-erchef/etc/app.config). This configuration file is rendered via a template(opscode-omnibus/files/private-chef-cookbooks/private-chef/templates/default/oc_erchef.config.erb), a portion of which looks like:
{s3_url, "<%= node['private_chef']['nginx']['x_forwarded_proto'] %>://<%= @helper.vip_for_uri('bookshelf') %>"},
Thus, the rendered configuration file will have an s3_url like:
{s3_url, "https://private-chef.opscode.piab"},
Given this configuration, erchef will attempt to contact erchef on port 443, the default HTTPS port. Unfortunately, nothing is listening on 443, the request to bookshelf fails and erchef returns a 500 to the user.
An astute user may attempt to set bookshelf['vip'] in private-chef.rb to something like:
bookshelf['vip'] = 'private-chef.opscode.piab:4000'
Reference : https://github.com/chef/chef-server/issues/50