gpt4 book ai didi

proxy - GitHub 页面的 Nginx 代理?

转载 作者:行者123 更新时间:2023-12-01 09:54:57 24 4
gpt4 key购买 nike

我们有一个博客,我们使用 Jekyll 将其托管在 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 不会将 Host header 发送到 blog.superfeedr.com。这使得它发送所有必需的 header :

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.x(对我来说是 0.6.32)这应该有效:

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

关于proxy - GitHub 页面的 Nginx 代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1057239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com