![Nginx proxy_pass root 到外部登陆页面](https://linux22.com/image/775133/Nginx%20proxy_pass%20root%20%E5%88%B0%E5%A4%96%E9%83%A8%E7%99%BB%E9%99%86%E9%A1%B5%E9%9D%A2.png)
对于我正在设置的新域 x.co,我希望根域 (x.co) 显示外部登陆页面,而不将 URL 更改为外部登陆页面的 URL。
此登陆页面已在 hubspot 上创建并发布于 a.hubspot.b/c
有没有简单的方法可以实现这一点?我查了一些答案,比如1,2,3,但没有得到。
我现在有的内容如下。它转发到登录页面,将 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
我绝望地复制的所有指令都是毫无意义的,很高兴可以摆脱它们。这一页在解释问题和解决方案方面被证明非常有用。