質問

私たちはジキルとgithubの上のホストのブログを持っています。それはそこにある: http://blog.superfeedr.comする

は、理想的には、私たちので、それは http://superfeedr.com/blog/ までになりたいですいくつかのAJAXを追加する必要があると私たちは、「同一生成元ポリシー」の問題を回避する必要があります。

私たちは、私たちの「メイン」のウェブサーバ上でnginxのを使用して、私は次のセットアップを持っています:

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;
}

残念ながら、あなたは http://superfeedr.com/blog/するに行けばあなたが見ることができるようにこれは明らかに動作しません。奇妙なことに、われわれはGithubにのホームページにリダイレクトしています。

PS:明らかに、我々は我々のメインサーバ上でブログをホストする可能性がありますが、目標は、サイトがダウンしている場合、我々はほとんどオンラインであることを保証できるように、別のホスト上で、それをホストすることです...

役に立ちましたか?

解決

まず、nginxのはblog.superfeedr.comにホストヘッダーを送信しません。これは、すべての必要なヘッダーを送信せます:

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;

第二に、いくつかのURLの書き換えが必要。いくつかの奇妙な理由では、これはあなたが使用しているのnginxのバージョンに依存します。とにかく、 (私にとっては0.6.32)0.6.xのために、この作業をする必要があります:

    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;
    }

また例えば、ブログは(CSS、画像など)を参照するすべてのパスをカバーする必要があります。

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

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;
        }

他のヒント

もうこれを行う方法(しかし、nginxのを介さず)は、DNSディレクティブである可能性があります。私はほとんどのDNSサービスは、URL前方にサービスを提供していますね。

たとえば、hover.comで、最初blogを楽しみにAを追加し、前方タブで[DNS]タブの下で64.99.80.30するblogディレクティブでhttp://superfeedr.com/blog/を追加し、

dnsimple.comでは、それは簡単です、ただblogに転送するURLhttp://superfeedr.com/blog/レコードを追加

これらの転送は、私は信じて、またhttps://タイプのURLのために働くます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top