我正在尝试在nginx服务器上的ased网站上实现HTTPS,现在即使使用以下配置,它也只能打开HTTP网站 我的Nginx服务器的服务器配置是这样
server {
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/mydomain.in/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.in/privkey.pem;
server_name mydomain.in www.mydomain.in;
rewrite ^(.*) http://$server_name$1 permanent;
}
server {
server_name mydomain.in www.mydomain.in;
access_log /var/log/nginx/mydomain.in.access.log rt_cache_redis;
error_log /var/log/nginx/mydomain.in.error.log;
root /var/www/mydomain.in/htdocs;
index index.php index.html index.htm;
include common/redis-php7.conf;
include common/wpcommon-php7.conf;
include common/locations-php7.conf;
include /var/www/mydomain.in/conf/nginx/*.conf;
}
该服务器不处理HTTPS请求,即,即使我在浏览器中专门放置了https,它仍然会将我带回http站点。我无法诊断它的nginx或wordpress是否出错?
注意:流量通过cloudflare dns路由,证书为 请关闭cloudflare,以免干扰。我是nginx的新手
答案 0 :(得分:0)
下面是基本概念。
server {
server_name mydomain.in www.mydomain.in;
listen 80;
location / {
return 301 https://mydomain.in$request_uri;
}
}
server {
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/mydomain.in/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.in/privkey.pem;
server_name mydomain.in www.mydomain.in;
access_log /var/log/nginx/mydomain.in.access.log rt_cache_redis;
error_log /var/log/nginx/mydomain.in.error.log;
root /var/www/mydomain.in/htdocs;
index index.php index.html index.htm;
include common/redis-php7.conf;
include common/wpcommon-php7.conf;
include common/locations-php7.conf;
include /var/www/mydomain.in/conf/nginx/*.conf;
}
端口server
(http)上的顶部listen
块80
被阻止。它有一个location
块,它执行return
301。return
优于most cases中的重写。我还将它放在location
块中,因为您有一个letsencrypt
ssl证书,可能需要另一个location ^~ /.well-known {
块来帮助处理。
端口server
(https)上的第二个listen
块443
被阻止。它具有SSL证书,并且包含以前作为http server
块公开的信息。
此设置将处理从http
或mydomain.in
上的www.mydomain.in
到https
mydomain.in
的重定向。在https
和mydomain.in
上都将收到SSL请求。
如果您希望它重定向到主要https域,则可以为次要服务器添加另一个服务器块。
www.mydomain.in
当然,这意味着您必须更改第二个server {
server_name www.mydomain.in;
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/mydomain.in/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mydomain.in/privkey.pem;
location / {
return 301 https://mydomain.in$request_uri;
}
}
块才能删除辅助域名。
此外,在测试时,您可能希望将server
更改为301
,这样,如果您第一次配置错误,它就不会卡在浏览器缓存中。一切恢复良好后,再更改回302
。