Why use map.conf vs. *.com?



First I really love what your team is doing (trying really hard to embrace it).

My set-up is:

  • WordPress networking + subdomains
  • Nginx Helper Plugin
  • Redis

While setting up domain mapping using the option “Enable Nginx Map.” domain names did not resolve. I checked to make sure the file was created, and added the map {} to my conf file (above the server {} not sure if that is the right location). Restarted nginx, nothing.

What I did to resolve the issue was to set my server_name to *.com, is that bad? If so why? If not why use the map.conf file when *.com will work and is less options.

My final conf file is, and is located in /etc/nginx/sites-available/foo.com

fastcgi_cache_path /home/foo/bar.com/cache levels=1:2 keys_zone=WORDPRESS:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";

#    map $http_host $blogid {
#        default               1;
#        include /home/foo/bar.com/public/wp-content/uploads/nginx-helper/map.conf;
#    }

server {

    # for domain mapping
    # This is already set in the main nginx.conf
    # listen 80 default_server;
    server_name bar.com *.bar.com *.com;

    # For domain mapping
    server_name_in_redirect off;

    access_log /home/foo/bar.com/logs/access.log;
    error_log /home/foo/bar.com/logs/error.log;

    root /home/foo/bar.com/public/;
    index index.php;

    ## Cache
    set $skip_cache 0;

    # POST requests and urls with a query string should always go to PHP
    if ($request_method = POST) {
        set $skip_cache 1;
    if ($query_string != "") {
        set $skip_cache 1;

    # Don’t cache uris containing the following segments
    if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
        set $skip_cache 1;

    # Don’t use the cache for logged in users or recent commenters
    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
        set $skip_cache 1;
    ## End Cache

    # Allow for WP subdirectories to work
    if (!-e $request_filename) {
        rewrite /wp-admin$ $scheme://$host$uri/ permanent;  
    rewrite ^(/[^/]+)?(/wp-.*) $2 last; 
    rewrite ^(/[^/]+)?(/.*\.php) $2 last; 
    location / {
        try_files $uri $uri/ /index.php?$args; 

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;
        fastcgi_cache WORDPRESS;
        fastcgi_cache_valid 60m;
    location ~ /purge(/.*) {
        fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1";


P.S., I’m still “playing around” with your ee product, I’m 50/50 with it atm.


map.conf has different purpose. It is used for legacy WordPress multisite static files handling.

server_name bar.com *.bar.com *.com; should be fine. Only thing - it will work for .com domains only.

You may try server_name _; and uncomment listen 80 default_server. Usually domain-mapped WordPress is default site for server.


Thanks for the explanation.