How to break dependency cycle in Puppet when including classes
Did a ton of testing as your question was interesting...
Found this post after a while: http://www.mail-archive.com/[email protected]/msg08224.html
I agree with the poster that this is a bug, or at least not well designed, but if you include the class with absolute scope (::nginx), you can then set a require to it, like so:
class jenkins::nginx{
include ::nginx
file{'/etc/nginx/sites-enabled/jenkins':
source => ...,
require => Class['::nginx'],
}
}