【问题标题】:Configure Laravel on a subdomain with Nginx on Elastic Beanstalk在 Elastic Beanstalk 上使用 Nginx 在子域上配置 Laravel
【发布时间】:2020-11-10 01:16:12
【问题描述】:

我的 Laravel 应用程序在主域(https://www.example.comhttps://example.com)上本地和远程运行,但我的暂存环境不起作用。主页有效,但其他路线无效(我收到 504)。

我使用的 nginx.conf 如下:

location / {
    try_files $uri $uri/ /index.php?$query_string;
    gzip_static on;
    if ($http_x_forwarded_proto = 'http'){
        return 301 https://$host$request_uri;
    }
}

如何将https://staging.example.com 添加到此配置中?

【问题讨论】:

  • 你是如何使用.ebextentions设置nginx的?您还使用基于 Amazon Linux 1 或 2 的 EB 平台吗?
  • @Marcin 是的,.ebextensions。 Linux 2.
  • 嗨。暂存环境是单独的EB环境吗?是单实例环境还是负载均衡环境?
  • 负载平衡和第二个 EB 环境(从生产中克隆)。
  • 如果它的负载平衡环境,从 http 到 https 的重定向应该在您的 ALB 上完成。 SSL 证书应部署在 ALB 上。并且域staging.example.com 是使用Route53 设置的?如果您使用负载平衡环境,我不确定您为什么要使用 nginx 将 http 重定向到 https?

标签: laravel nginx amazon-elastic-beanstalk


【解决方案1】:

由于您使用的是 Amazon Linux 2 (AL2),这可以解释为什么没有使用您的 nginx 配置文件。

具体来说,在 AL2 平台上,nginx 配置文件 should be set.platform/nginx/conf.d/ 中,而不是在 .ebextensions 中。 nginx 是在 AL1 中使用 .ebextentions 设置的,但在 AL2 中没有。

因此,您可以尝试使用以下内容创建文件.platform/nginx/conf.d/myconf.conf

location / {
    try_files $uri $uri/ /index.php?$query_string;
    gzip_static on;
    if ($http_x_forwarded_proto = 'http'){
        return 301 https://$host$request_uri;
    }
}

请注意,我无法验证 nginx 配置文件是否正确。这只是基于你的问题。它也可能有错误。

【讨论】:

  • 抱歉,我刚刚注意到我在两个位置都有该文件。也在 .platform/nginx/conf.d/elasticbeanstalk/laravel.conf 下。
  • @Sherlock 所以配置本身可能有问题。你可以ssh到EB实例并手动应用它,重新启动nginx并检查它是否按预期工作?
  • 完成了,但还是不行。我不认为配置本身是错误的;这是适用于example.comexample.com 的文件。我只是认为它缺乏子域支持,但我知道我应该如何解决这个问题。
  • @Sherlock 好的。希望它会成功。请让我知道它会如何进行。顺便说一句,.ebextentions 中的 nginx 文件是多余的。在 AL2 上,.platform 应该用于 nginx。
猜你喜欢
  • 2020-08-27
  • 2020-11-05
  • 2015-11-27
  • 2019-09-24
  • 2019-01-16
  • 2015-02-23
  • 2014-07-21
  • 2020-10-30
  • 2017-09-20
相关资源
最近更新 更多