NGINX - Umschreiberegeln für Subdomains

NGINX - Umschreiberegeln für Subdomains

Ich habe einen SaaS-Web-Builder. Jeder Mandant hat eine Subdomain.

Aus geschäftlichen Gründen muss ich jedem Mieter eine eigene Sitemap geben. Das Problem ist nicht die Generierung, sondern die Präsentation.

Im Moment habe ich eine Index-Sitemap und eine Sitemap für jeden Mandanten generiert.

$ ls public/sitemaps
sitemap.tenant1.xml
sitemap.tenant2.xml

Was mich interessiert, ist die Erstellung einer Umschreiberegel, die eine Anforderung zum tenant1.example.com/sitemap.xmlBereitstellen der Datei ausgibt, auf die derzeit public/sitemaps/sitemap.tenant1.xmlauch über zugegriffen werden kann .tenant1.example.com/sitemaps/sitemap.tenant1.xml

Ist dies mit einer Umschreiberegel möglich?

Extras

cat /etc/nginx/sites-enabled/example.com

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
  listen 80;
  server_name example.com;
  return 301 $scheme://www.example.com$request_uri;
}

upstream app {
    server localhost:3000 max_fails=3 fail_timeout=300;
}


server {
    listen 443 ssl;
    server_name *.example.com;

    root /var/www/app/public;

    ssl_certificate /etc/ssl/app.crt;
    ssl_certificate_key /etc/ssl/app.key;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_dhparam ...;
    ssl_ciphers ...;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:50m;
    ssl_stapling on;
    ssl_stapling_verify on;
    add_header Strict-Transport-Security max-age=15768000;
    server_tokens off;

    try_files $uri/index.html $uri @app;

    location @app {
        proxy_pass http://app;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
    }

    error_page 500 502 503 504 /500.html;
    client_max_body_size 4G;
    keepalive_timeout 10;
}

Antwort1

Sie verwenden einen Catch-All- serverBlock, um alle Ihre Subdomains zu verwalten. Wenn Sie also Ihre XML-Sitemap-Dateien mit dem tatsächlichen Subdomain-Namen im Dateinamen benennen, wird dies sehr einfach.

Sie können beispielsweise eine Datei erstellen sitemap.tenant1.example.com.xml. Anschließend können Sie diese Datei mit einem einzigen locationladen alias:

location = /sitemap.xml {
    alias /unix/path/to/sitemap.$host.xml;
}

verwandte Informationen