Nginx proxy_pass root 到外部登陆页面

Nginx proxy_pass root 到外部登陆页面

对于我正在设置的新域 x.co,我希望根域 (x.co) 显示外部登陆页面,而不将 URL 更改为外部登陆页面的 URL。

此登陆页面已在 hubspot 上创建并发布于 a.hubspot.b/c

有没有简单的方法可以实现这一点?我查了一些答案,比如123,但没有得到。

我现在有的内容如下。它转发到登录页面,将 URL 更改为 a.hubspot.b/c。我需要 URL 保持不变 x.co。

值得一提的是,我也使用 cloudflare 缓存和 DNS。

server {
        listen 80;
        server_name  x.co www.x.co;
        return         301 https://$server_name$request_uri;
}

server {
        listen       443 ssl http2;
        server_name  x.co www.x.co;

        ssl_certificate      x.co.pem;
        ssl_certificate_key  x.co.key;

        ssl_protocols   TLSv1 TLSv1.1 TLSv1.2;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location / {
            #proxy_pass https://x-12345.hubspotpagebuilder.eu/coming-soon/;

            resolver 8.8.8.8;

            proxy_pass https://x-12345.hubspotpagebuilder.eu/coming-soon;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;


            #root /var/www/frontend/x;
            #root   html;
            #index  index.html index.htm;
        }
    }

编辑/添加 - 愚蠢的是,我没有费心检查 nginx 错误日志。当我检查时,发现了问题的线索。错误日志中有

"SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes_sslv3 alert handshake failure:SSL alert number 40) while SSL handshaking to upstream, client: 2401: ......" 

(最后的 ...... 意味着这里还有更多我没有输入的文本。我在后端使用 Cloudflare 证书并重定向到 nginx 中的 hubspot 页面 - 这似乎是一个问题。

确实如此。解决方案是添加proxy_ssl_server_name on;proxy_set_header我绝望地复制的所有指令都是毫无意义的,很高兴可以摆脱它们。这一页在解释问题和解决方案方面被证明非常有用。

相关内容