当前位置: 首页 > 知识库问答 >
问题:

AWS上的每个子域是否可以有单独的cname记录

白嘉志
2023-03-14

我希望有www.example.comstaging.example.comdemo.example.com,其中每一个都映射到Elastic Beanstatk上相同应用程序的单独环境。

这有可能吗?

在我的托管区域上,例如。com ,我已经为www.example设置了cname记录。com,登台。实例com和演示。实例com,每个都有一个指向各自的EB url的值。

第一个是我设置的www.example。com工作,请求到达环境。但是当我试图通过ping staging联系其他人时。实例com,结果为ping:无法解析转移。实例com:未知主机。

  • 在Route 53上购买和托管的域
  • 在AWS证书管理器上颁发的证书
  • 我在每个负载均衡器上以相同的方式设置了证书
  • 第一个,www.example.com工作正常
  • 其他人没有
  • 我不确定我错过了什么,除非这是不可能的

这有可能开始工作吗?

注意:我已经用我的实际域替换了示例。com。

我可能正在靠近,但它还没有工作,它正在返回,您没有访问/用户的权限。

根据此链接,https://serverfault.com/questions/407961/setting-up-subdomains-within-amazon-aws-elastic-beanstalk.

我补充道:

files:
  "/etc/httpd/conf.d/vhost.conf":
    mode: "000644"
    owner: root
    group: root
    encoding: plain
    content: |
      NameVirtualHost *:80

      <VirtualHost *:80>
        DocumentRoot "/var/app/current/"
         <Directory "/var/app/current/">
          Options Indexes FollowSymLinks MultiViews
          AllowOverride All
          Require all granted
         </Directory>
      </VirtualHost>

      <VirtualHost *:80>
       ServerName staging.example.com
       DocumentRoot "/var/app/current/your-new-webroot"
        <Directory "/var/app/current/your-new-webroot">
         Options Indexes FollowSymLinks MultiViews
         AllowOverride All
         Require all granted
        </Directory>
      </VirtualHost>

现在,当我运行ping staging时。实例com,响应为:

elasticbeanstalk.com(35.182.128.147):56个数据字节

这很好。但当我试图提出实际要求时:

curl -X POST -H "Content-Type: application/json" 
-H "Authorization: Bearer ..." -d '{}' https://staging.example.com/user

答复是:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /user
on this server.<br />
</p>
</body></html>

我重新排序了VirtualHosts并添加了ServerName,现在看起来是这样的:

files:
  "/etc/httpd/conf.d/vhost.conf":
    mode: "000644"
    owner: root
    group: root
    encoding: plain
    content: |
      NameVirtualHost *:80

      <VirtualHost *:80>
       ServerName staging.example.com
       DocumentRoot "/var/app/current/your-new-webroot"
        <Directory "/var/app/current/your-new-webroot">
         Options Indexes FollowSymLinks MultiViews
         AllowOverride All
         Require all granted
        </Directory>
      </VirtualHost>

      <VirtualHost *:80>
        ServerName www.example.com
        DocumentRoot "/var/app/current/"
         <Directory "/var/app/current/">
          Options Indexes FollowSymLinks MultiViews
          AllowOverride All
          Require all granted
         </Directory>
      </VirtualHost>

但是我仍然从我的POST请求中得到相同的响应:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /user
on this server.<br />
</p>
</body></html>

此外,根据我的/var/log/httpd/error_log日志:

AH01630: client denied by server configuration: /var/app

几点。

>

  • 更新了DirectoryDocumentRoot以指向我的烧瓶应用程序的服务器上实际存储我的应用程序文件的位置,"/opt/python/当前/app",之前我复制并粘贴了"/var/app/当前/"

    用httpd-v检查了我的apache版本。结果是,服务器版本:Apache/2.4.27(Amazon)\n服务器构建时间:2017年9月24日23:19:50

    更新文件:

    files:
      "/etc/httpd/conf.d/vhost.conf":
        mode: "000644"
        owner: root
        group: root
        encoding: plain
        content: |
          NameVirtualHost *:80
    
          <VirtualHost *:80>
           ServerName staging.example.com
           DocumentRoot "/opt/python/current/app"
            <Directory "/opt/python/current/app">
             Options Indexes FollowSymLinks MultiViews
             AllowOverride All
             Require all granted
            </Directory>
          </VirtualHost>
    
          <VirtualHost *:80>
            ServerName www.example.com
            DocumentRoot "/opt/python/current/app"
             <Directory "/opt/python/current/app">
              Options Indexes FollowSymLinks MultiViews
              AllowOverride All
              Require all granted
             </Directory>
          </VirtualHost>
    

    仍然得到同样的结果。

  • 共有1个答案

    谢墨竹
    2023-03-14

    ping转移。实例com可以正常工作,因为您的CNAME解析正确。但是,VirtualHost指令是以线性方式应用的。由于您的第一个VHost部分不包含服务器名,因此默认情况下,它将应用于所有请求。

    更改这两个部分的顺序,或者向它们全部添加一个服务器名,事情应该开始工作了(可能需要重新启动EB应用程序)。

    如果403错误有其他原因,您还可以检查机器本身的日志文件。

     类似资料:
    • 我决定在AWS上托管我自己的投资组合,所以我做了以下步骤。 在s3上托管(一切正常) 在route53中购买域 创建了一个类型记录,将我的域指向s3(一切正常) 在ACM中为域*.mywebsite生成了公共证书。com,我的网站。网站 创建了CloudFront发行版,并具有以下设置 原始域名:链接到s3(一切正常) CNAMES:www.mywebsite。com,*.mywebsite。co

    • 我可以在 route53 中设置记录 abc.mydomainname.com 指向某个外国域(例如 google.com)的点吗? 目前,我从www.mydomainname.com指向mydomainname.com,它是作品。 最好的

    • 问题内容: 你好 我想获得在运行时在Java中实现接口的类的列表,这样我就可以进行查找服务而不必对其进行硬编码。有没有简单的方法可以做到这一点?我不害怕 问题答案: 最简洁的答案是不。 长的答案是,子类可以以多种方式出现,从根本上说,根本不可能分类找到它们。 您无法在运行时执行此操作,但只有在加载了类以及如何知道它们已加载后才能找到类?您可以扫描每个JAR和类文件,但这不是确定的。另外,还有URL

    • 问题内容: 我正在尝试整理我的第一个数据驱动测试框架,该框架通过Selenium Grid / WebDriver在多个浏览器上运行测试。现在,我在自己的类中拥有每个测试用例,并且对浏览器进行了参数设置,因此它在每个浏览器中都运行一次每个测试用例。 在大型测试框架上常见吗?还是应该将每个测试用例复制并微调到其各自类中的每个浏览器?因此,如果我正在测试chrome,firefox和IE,是否应该为每

    • 问题内容: 我正在尝试将以下两个三元表达式组合为一个(以便我既可以通过btn-success / danger类控制颜色,也可以通过width-small / medium / wide类控制按钮div的宽度) 我意识到我可以按照以下方式做一些事情;但是,我想利用1.1.5中可用的三元表达式 用空格分隔表达式对我不起作用,用逗号分隔表达式也不对 感谢您的协助,帮助您确定是否/如何在一个单一的表达式

    • 我正在页面上实例化多个Vue应用程序: 我的商店文件看起来像这样: 和地址模块: 但该存储似乎在页面上的所有Vue实例中共享。为什么,当我为每个Vue应用程序创建新实例时? 谢啦