我在DigitalOcean上有一个有关Ghost的博客。Nginx提供的服务与以下配置文件相同:
server {
listen 443 ssl;
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include snippets/ssl-params.conf;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:2825;
}
}
证书是使用Let's Encrypt为带有和不带有www的域生成的。在Ghost config.js文件中,URL写入使用SSL的规则:https : //example.com/问题是当我进入博客(没有wwww的域)时,可以正确登录并使用SSL,但是当我尝试使用https://www.example.com登录时,出现SSL证书身份验证错误。我真的不明白这里可能出什么问题。在使用www输入我的域时,我需要重定向到该域,但不使用www。我之前在其他应用程序节点上使用相同的配置代码完成了此操作。
这是我的Nginx配置文件,我在其中为Ghost提供博客。该证书是使用“让我们加密”生成的,并且在两个域中均正常工作。缺点是执行301重定向时存在缺陷,因为它不能正常工作,因为带有www的域告诉我证书无效,但是,如果我尝试进行反向重定向,从非www到www,它将显示我收到相同的消息,但对于没有www的域:
server {
listen 80;
server_name www.example.com;
return 301 https://example.com$request_uri;
}
server {
listen 80;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443;
server_name example.com;
return 301 https://www.example.com$request_uri;
}
server {
listen 443;
server_name www.example.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;
include snippets/ssl-params.conf;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://localhost:9002/;
proxy_redirect off;
}
}
当前,我正在使用Digital Ocean的Droplet,在其中配置了3个字段A,一个值为*的字段A指向虚拟机的IP,一个@字段也指向服务器的IP,以及最后,值为www的字段A转到我服务器的IP。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句