Question

Nous avons un blog que nous hébergeons sur github avec Jekyll; c'est là: http://blog.superfeedr.com

Idéalement, je souhaite que ce soit à l'adresse http://superfeedr.com/blog/ , car nous Il faut ajouter AJAX et nous devons éviter les & "Même politique d'origine" & "; problèmes.

Nous utilisons Nginx sur notre " main " serveur Web, et j'ai la configuration suivante:

location /blog/ {

proxy_pass http://blog.superfeedr.com/;
    proxy_redirect     off;
    proxy_max_temp_file_size 0;

    client_max_body_size       10m;
    client_body_buffer_size    128k;

    proxy_connect_timeout      90;
    proxy_send_timeout         90;
    proxy_read_timeout         90;

    proxy_buffer_size          4k;
    proxy_buffers              4 32k;
    proxy_busy_buffers_size    64k;
    proxy_temp_file_write_size 64k;
}

Malheureusement, comme vous pouvez le voir si vous accédez à http://superfeedr.com/blog/ cela ne fonctionne évidemment pas. Curieusement, nous sommes redirigés vers la page d'accueil de Github.

PS: nous pourrions évidemment héberger le blog sur notre serveur principal, mais le but est de l’héberger sur un hôte différent, de manière à pouvoir presque garantir qu’il sera en ligne si le site est en panne ...

Était-ce utile?

La solution

Premièrement, nginx n’envoie pas d’en-tête d’hôte à blog.superfeedr.com. Cela lui fait envoyer tous les en-têtes requis:

proxy_set_header   Host                    blog.superfeedr.com;
proxy_set_header   X-Host                 blog.superfeedr.com;
proxy_set_header   X-Real-IP             $remote_addr;
proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

Deuxièmement, une réécriture d’URL est requise. Pour une raison étrange, cela dépend de la version de nginx que vous utilisez. En tous cas, pour 0.6.x (0.6.32 pour moi) cela devrait marcher:

    location /blog {
                rewrite  ^/blog(.*)$ /$1 last;
                error_page 402 = @blog;
                return 402;
    }
    location @blog {
        proxy_pass http://blog.superfeedr.com;

        # the rest of proxying parameters should be here

         proxy_set_header   Host                    blog.superfeedr.com;
         proxy_set_header   X-Host                 blog.superfeedr.com;
         proxy_set_header   X-Real-IP $remote_addr;
         proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    }

Vous devez également couvrir tous les chemins auxquels le blog fait référence (css, images, etc.), par exemple.

location /css {
    error_page 402 = @blog;
    return 402;
}

Pour 0.7.59:

        location /blog {
                set $blog 1;
                rewrite  ^/blog(.*)$ /$1 last;
        }
        location /css {
                set $blog 1;
                error_page 402 = @blog;
                return 402;
        }
        location / {
                if ($blog) {
                        error_page 402 = @blog;
                        return 402;
                }
                # here is where default settings for / should be
                root /usr/local/www/nginx/;
        }
        location @blog {
                proxy_pass http://blog.superfeedr.com;

                # the rest of proxying parameters should be here

                proxy_set_header   Host                   blog.superfeedr.com;
                proxy_set_header   X-Host                 blog.superfeedr.com;
                proxy_set_header   X-Real-IP $remote_addr;
                proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        }

Autres conseils

Une autre façon de faire cela (mais sans impliquer nginx) pourrait être avec une directive DNS. Je pense que la plupart des services DNS offrent un service de transfert d’URL.

Par exemple, dans hover.com, ajoutez d'abord blog avec A directive à 64.99.80.30 sous l'onglet DNS, puis sous l'onglet Transférer, ajoutez http://superfeedr.com/blog/ en avant à URL

Dans dnsimple.com, c’est plus simple, il suffit d’ajouter un https:// <=> enregistrement à transférer à <=>

. Je pense que ces renvois fonctionnent également pour les <=> URL de type.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top