我正在尝试重定向所有来自http://blog.example.org到https://blog.example.org。
不幸的是我收到这个错误:
400 Bad Request The plain HTTP request was sent to HTTPS port
我的配置:
server {
listen 80;
server_name blog.example.org;
return 301 https://$host$request_uri$is_args$args;
}
server {
server_name blog.example.org;
listen 443 ssl http2;
root /srv/www/wordpress;
index index.php index.html index.htm;
答案1
您的退货声明不正确。您应该:
return 301 https://$server_name$request_uri;
答案2
我不太确定,但我认为这里使用$is_args
和是错误的,因为会包含完整的请求字符串(带参数的完整 URI 路径)。你试过不用它们吗?例如:$args
$request_uri
server {
listen 80;
server_name blog.example.org;
return 301 https://$host$request_uri;
}
答案3
重定向块应该是:
server {
listen 80;
server_name blog.example.org;
return 301 https://blog.example.org$request_uri;
}
答案4
尝试使用重写,而不是返回。
rewrite ^(.*) https://$host$1 permanent;
这就是我们服务器上的做法。这可能是一种弃用的方法,因为它一直都是这样,但它在 nginx 1.10.0 上有效
编辑:我看错了问题。您需要将这些指令添加到 SSL 服务器配置中:
ssl on;
ssl_certificate /path/to/ssl/public/certificate.pem;
ssl_certificate_key /path/to/ssl/private/key.pem;