If you write ...
Exclude="/ignore_dir_1/* /ignore_dir_2/*"
zip -r /var/backup.zip /var/www -x "$Exclude"
, zip receives $Exclude as a single argument, and considers the space between the files as part of the path.
To pass multiple arguments to your command, you need to use an array.
Exclude=("/ignore_dir_1/*" "/ignore_dir_2/*")
zip -r /var/backup.zip /var/www -x "${Exclude[@]}"
This makes sure that the items are individually expanded and passed as arguments to your command.