redirect - Nginx 将 HTTP 重定向到 HTTPS 并将非 www 重定向到 ww

标签 redirect ssl nginx https

我正在设置一个带 SSL 的 Nginx 服务器。

带有 SSL 的域是 www.mydomain.example

我想重定向所有请求:

http://mydomain.example, http://www.mydomain.example, & https://mydomain.example

https://www.mydomain.example

我目前有以下服务器 block 设置:

server{
  listen 443 ssl;
  root /www/mydomain.example/;

  ssl_certificate /ssl/domain.crt;
  ssl_certificate /ssl/domain.key;
  .
  .
  .
}

server{
  listen 80;
  server_name mydomain.example;
  return 301 https://www.mydomain.example$request_uri;
}

server{
  listen 80;
  server_name www.mydomain.example;
  return 301 https://www.mydomain.example$request_uri;
}

server{
  listen ssl 443;
  server_name mydomain.example;
  return 301 https://www.mydomain.example$request_uri;
}

目前这行不通,但我不明白为什么不行。我可以获得 HTTP -> HTTPS 工作或无 www 到 -> www 工作的组合,但如上所述混合它们不起作用。

最佳答案

如果您的 SSL 证书不支持非 www 域,SSL 重定向将不起作用。 配置正确,但可以减少到只有 1 个重定向服务器

另外别忘了重新加载 Nginx sudo service nginx reload

server {
  listen 80;
  listen 443 ssl;
  server_name example.com;
  # add ssl settings
  return 301 https://www.example.com$request_uri;
}

关于redirect - Nginx 将 HTTP 重定向到 HTTPS 并将非 www 重定向到 ww,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21106998/

相关文章:

redirect - Nginx 位置别名 + 重定向

ssl - TLS 证书主题(CN、OU 和 O)

google-chrome - 如何在 chrome 中使用带有 HTTPS 的 BurpSuite 代理

java - 有什么方法可以使用 javax.net.ssl.SSLServerSocket 指定 Diffie-Hellman 素数的范围吗?

docker - docker-compose 后 Nginx 不运行服务器

php - ERR_TOO_MANY_REDIRECTS错误的解决方案

perl - 为什么本地在 STDERR 和 STDOUT 上不起作用?

Apache - 由于 RewriteRule,重定向太多

docker 命令未运行

networking - 一个 Nginx 可以使用多个公共(public) IP 地址吗?