GitHubのページのためのnginxのプロキシ?
質問
私たちはジキルと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
に転送するURL
のhttp://superfeedr.com/blog/
レコードを追加
これらの転送は、私は信じて、またhttps://
タイプのURLのために働くます。