我有一个 Web 应用程序,用户可以在其中创建自己的页面。Web 应用程序将为创建的每个页面生成如下 URL:https://my-domain.com/page/12345。我希望我的用户能够通过将 cname 记录指向我的服务器来在我的网站上使用他们自己的域名/子域名而不是这个 URL。
因此,我使用 Cloudflare 上的另一个域名运行了一些测试,并创建了以下 cname 记录:
subdomain.domain.com. 1 IN CNAME my-web-app-domain.com.
基本上,我想subdomain.domain.com
指向我的 Web 应用程序域,以便我的用户可以使用访问他们的页面subdomain.domain.com
。
为了在使用 nginx 的目标 Web 应用服务器上实现此目的,我在 nginx 配置文件中创建了以下块:
server {
listen 80;
server_name subdomain.domain.com;
location / {
proxy_pass http://my-web-app-domain.com/page/12345;
proxy_set_header X-Real-IP $remote_addr;
}
}
因此,这基本上是可行的,但它不会保留subdomain.domain.com
在地址栏中,而是将用户重定向到http://my-web-app-domain.com/page/12345
。我该如何修改代码以使其保留subdomain.domain.com
而不是重定向?
如果它有用,我的网络应用程序使用 Laravel 并且测试它是否可能是问题,我已将其添加到我的 TrustProxies.php 文件中,但它仍然是一样的:
protected $proxies = '*';
答案1
我认为这里的问题是您的 Laravel 应用程序期望 HTTP Host 标头为my-web-app-domain.com
,但它却是其他内容。这种不匹配导致应用程序重定向到正确的应用程序域。
尝试添加proxy_set_header Host my-web-app-domain.com;
到您的配置中。