我有一个ASP Net Core应用程序在Google Cloud Engine的Linux服务器中运行。主页显示完美,但是当我单击按钮导航到子域时,显示“ ERR_NAME_NOT_RESOLVED”,显示“无法访问此站点”。我在应用程序日志中没有看到任何错误,因此我想调用甚至无法到达应用程序。
当应用程序在本地Windows计算机上运行时,所有子域都可以访问并完全正常运行。
我尝试在本地Linux机器上运行该应用程序,结果是相同的。一切正常。
仅当没有请求的SSL证书时,才能访问服务器子域。
例如,当我创建一个子域时:subdomain.example.com是否可以访问它。通过这项工作,我请求了当前子域的证书。这也可以正常工作,并且该子域当前处于安全状态。但是,当我创建一个新的子域并重复前面的步骤时,先前的子域不再起作用,但是新的子域起作用了。
在没有证书要求的情况下,所有这些子域都可以正常工作,但是子域是“不安全的”。
使用GoDaddy要求证书。
这是Nginx的配置:
server {
server_name example.com *.example.com;
location / {
proxy_pass https://localhost:5001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /activityhub {
proxy_pass https://localhost:5001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
location /votehub {
proxy_pass https://localhost:5001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
listen 443 ssl;
ssl_certificate /root/letsencrypt/dehydrated/certs/example.com/fullchain.pem;
ssl_certificate_key /root/letsencrypt/dehydrated/certs/example.com/privkey.pem;
}
server {
if ($host = example.com) {
return 301 https://$host$request_uri;
}
}
这个想法是一个站点,用户可以在其中为组织创建不同的子域。因此,当用户按下按钮时,他们可以创建一个子域:organisation.example.com以显示自己的组织。此时,应用程序在https://organisation.localhost:5001上创建一个子域。现在,该域名应该自动以dns之类的域名“ https://organisation.example.com进行安全保护。请求SSL证书的域为example.com和* .example.com
我希望所有子域都可以使用SSL证书,而不会使子域不安全或无法访问。所有这些子域都应使用通配符。