https 不适用于我安装的 ssl(nginx 和 letsencrypt)
https is not working with my installed ssl (nginx & letsencrypt)
我已经在我的 nginx
服务器上使用 letsencrypt 安装了 ssl 证书。它在以下域中完美运行:
http://shajao.com
网站完美重定向,ssl 运行良好,在 ssllabs 中获得 A+ 分数。
我试图在同一台服务器上做同样的事情,但域名不同,但无法正常工作。
基本上 ssl 是行不通的。因此,当我在浏览器中访问域时,它会启动无限重定向循环。所以我停止了从 http 到 https 的重定向,发现 https 不工作,这让网站被重定向到 http。
我的 dns 是使用 cloudflare 管理的,我也尝试从那里关闭 ssl 功能。
我的服务器代码:
server {
listen 80;
listen [::]:80;
server_name getcoursetube.com www.getcoursetube.com;
root /media/6sense/www/getcoursetube.com;
index index.html index.htm index.nginx-debian.html;
# return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
root /media/6sense/www/getcoursetube.com;
index index.html index.htm index.nginx-debian.html;
server_name getcoursetube.com www.getcoursetube.com;
location / {
try_files $uri$args $uri$args/ /index.html;
}
error_log /media/6sense/www/getcoursetube.com/logs/error.log;
access_log /media/6sense/www/getcoursetube.com/logs/access.log;
#WARNING: Please read before adding the lines below!
add_header Strict-Transport-Security "max-age=31536000;
includeSubDomains" always;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_certificate /etc/letsencrypt/live/getcoursetube.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/getcoursetube.com/privkey.pem;
ssl_trusted_certificate /etc/nginx/ssl/chain.pem;
}
花了几个小时后,我在 DigiCert 上测试了我的证书。并发现 DigiCert 显示的是 Cloudflare 颁发的 SSL 证书。
我从 Cloudflare 关闭了 SSL,但它不起作用。所以我不得不退出 Cloudflare。
我从 Cloudflare 中删除了我的站点并通过 GoDaddy(从我购买域名的地方)管理我的 DNS。它工作得很好。
让我知道是否有人有更好的答案并且也通过 Cloudflare 解决了这个问题。
更新:
我在 Cloudflare 上重新添加了我的域,并在 Cloudflare 中将 SSL 设置为完整模式。从 Nginx 服务器配置中删除了重定向代码,并在 Cloudflare 上始终启用 https。一切开始完美运行
我的原因是我不允许入站流量到我的实例上的端口 443。
我已经在我的 nginx
服务器上使用 letsencrypt 安装了 ssl 证书。它在以下域中完美运行:
http://shajao.com
网站完美重定向,ssl 运行良好,在 ssllabs 中获得 A+ 分数。
我试图在同一台服务器上做同样的事情,但域名不同,但无法正常工作。 基本上 ssl 是行不通的。因此,当我在浏览器中访问域时,它会启动无限重定向循环。所以我停止了从 http 到 https 的重定向,发现 https 不工作,这让网站被重定向到 http。
我的 dns 是使用 cloudflare 管理的,我也尝试从那里关闭 ssl 功能。
我的服务器代码:
server {
listen 80;
listen [::]:80;
server_name getcoursetube.com www.getcoursetube.com;
root /media/6sense/www/getcoursetube.com;
index index.html index.htm index.nginx-debian.html;
# return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
root /media/6sense/www/getcoursetube.com;
index index.html index.htm index.nginx-debian.html;
server_name getcoursetube.com www.getcoursetube.com;
location / {
try_files $uri$args $uri$args/ /index.html;
}
error_log /media/6sense/www/getcoursetube.com/logs/error.log;
access_log /media/6sense/www/getcoursetube.com/logs/access.log;
#WARNING: Please read before adding the lines below!
add_header Strict-Transport-Security "max-age=31536000;
includeSubDomains" always;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
ssl_certificate /etc/letsencrypt/live/getcoursetube.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/getcoursetube.com/privkey.pem;
ssl_trusted_certificate /etc/nginx/ssl/chain.pem;
}
花了几个小时后,我在 DigiCert 上测试了我的证书。并发现 DigiCert 显示的是 Cloudflare 颁发的 SSL 证书。
我从 Cloudflare 关闭了 SSL,但它不起作用。所以我不得不退出 Cloudflare。 我从 Cloudflare 中删除了我的站点并通过 GoDaddy(从我购买域名的地方)管理我的 DNS。它工作得很好。
让我知道是否有人有更好的答案并且也通过 Cloudflare 解决了这个问题。
更新:
我在 Cloudflare 上重新添加了我的域,并在 Cloudflare 中将 SSL 设置为完整模式。从 Nginx 服务器配置中删除了重定向代码,并在 Cloudflare 上始终启用 https。一切开始完美运行
我的原因是我不允许入站流量到我的实例上的端口 443。