使用 AWS Route 53 和 NGINX 无法通过 www 访问我的网站

使用 AWS Route 53 和 NGINX 无法通过 www 访问我的网站

我的网站已经启动并运行,您可以在互联网上通过[domain].com在浏览器中输入地址来找到它。

当我尝试使用访问它时www.[domain].com,它返回错误(未找到)。

我使用 Route 53 作为 DNS 服务器,其配置如下:

在此处输入图片描述

(地址、IP 和令牌不是真实的)

在我的服务器上我有以下配置(NGINX):

server {
      listen 80 default_server;
    
      root /var/www/domain;
      index index.html index.htm;      
    
      location /api {
            proxy_redirect          http://localhost:3001/  /api;
            proxy_pass_header       Server;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Scheme $scheme;
            proxy_set_header        Host $http_host;
            proxy_set_header        X-NginX-Proxy true;
            proxy_connect_timeout   5;
            proxy_read_timeout      240;
            proxy_intercept_errors  on;
    
            proxy_pass              http://localhost:3001;
        }
    
        location /graphql {
            proxy_redirect          http://localhost:3001/  /graphql;
            proxy_pass_header       Server;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Scheme $scheme;
            proxy_set_header        Host $http_host;
            proxy_set_header        X-NginX-Proxy true;
            proxy_connect_timeout   5;
            proxy_read_timeout      240;
            proxy_intercept_errors  on;
    
            proxy_pass              http://localhost:3001;
       }
    
      # Root route
      location = / {
        try_files $uri /app/index.html;
      }
    
      # Any other route default to landing
      location / {
        try_files $uri $uri/ /app/index.html;
      }
    }

我需要让我的网站能够同时适用于[domain].com和 www. [domain].com,并且www.[domain].com/page无论如何访问它都能在浏览器中显示正确的名称。

非常感谢您的帮助。

答案1

对我来说,您的裸域名和 www 域名都解析到相同且显然正确的 IP 地址:3.221.4.90

该 IP 地址与您在屏幕截图中显示的不同。

两个网站都从纯 HTTP 重定向到 HTTPS。

但是 HTTPS 连接到 www 会导致错误消息:

curl -vv https://www.quadfloor.com/

* About to connect() to www.quadfloor.com port 443 (#0)
*   Trying 3.221.4.90...
* Connected to www.quadfloor.com (3.221.4.90) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* Server certificate:
*   subject: CN=quadfloor.com                                 
*   start date: Feb 01 16:54:41 2022 GMT
*   expire date: May 02 16:54:40 2022 GMT
*   common name: quadfloor.com
*   issuer: CN=R3,O=Let's Encrypt,C=US
* NSS error -12276 (SSL_ERROR_BAD_CERT_DOMAIN)
* Unable to communicate securely with peer: requested domain name does not match the server's certificate.
* Closing connection 0
curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.

您的 TLS 证书似乎仅对 有效,quadfloor.com而对 无效www.quadfloor.com

建议:使用该certbot --expand选项添加www.quadfloor.com到您当前的证书。

此外,您可能需要查看您的 WordPress 设置,当我使用 curl-k选项忽略证书错误时,我还会看到一堆 href="http://3.221.4.90/wp-content/plugins/elementor/...包含您的 IP 地址而不是网站域名的错误,而且将 https 与 http 内容混合不是一个好主意。我还看到了指向的链接href="https://3.221.4.90/,您可能也没有针对裸 IP 地址的 TLS 证书。

相关内容