sed doesn't understand literal strings, only regexps and backslash-enabled replacement text, see is-it-possible-to-escape-regex-metacharacters-reliably-with-sed for details.
I'd use awk for this since it does let you use literal strings:
awk -i inplace '
BEGIN { old="${SERVER_ENVIRONMENT}"; new=ENVIRON["SERVER_ENVIRONMENT"] }
s=index($0,old) { $0=substr($0,1,s-1) new substr($0,s+length(old)) }
1' /etc/nginx/sites-available/default.conf
the above will work no matter which characters $SERVER_ENVIRONMENT
contains.
To do "inplace" editing it's using awk -i inplace '...' file
with GNU awk just like you can do sed -i '...' file
with GNU sed.
Since your variable name is all-upper-case I assume it's exported (see correct-bash-and-shell-script-variable-capitalization for why I say that) but if not then set it to itself on the command line so you don't have to export it for it to be available in ENVIRON[]
:
SERVER_ENVIRONMENT="$SERVER_ENVIRONMENT" awk -i inplace '...' file