The more complicated your staging server configuration gets relative to production, the more likely you are to compromise its utility. That said, there are a couple that are too valuable to not make.
For example, my staging server has a whitelist of email addresses and phone numbers owned by me.
Many companies will want their staging environment to be non-public — that way, customers don’t see code before it is ready, and critical issues never affect the outside world.(I have only one quibble with deprec : it installs software from source rather than using your system’s package manager. Nginx two years down the road is needlessly hard and error prone, when instead you could just have used apt-get in the first place and then updating is a piece of cake.) You can also use Fabric, Chef, Fog, or a similar system to script up building new environments. Try to recreate your production environment, down to a T, on another host at your VPS/cloud/etc provider, or on another physical machine if you actually still own machines.Keep tweaking the script until it produces something which actually matches your production environment.I worked for almost three years as a cog in a Japanese megacorporation, and one of the best parts about that experience (perhaps even worth the 70 hour weeks) was that they taught me how to be a professional engineer.Prior to doing so, my workflow generally involved a whole lot of bubble gum, duct tape, and praying.