nginx将https://WWW.example重定向到httPS://示例(SSL / HTTPS和NON-WWW)

时间:2017-06-05 21:35:57

标签: ssl redirect nginx web https

我想要

  1. http://www.domain
  2. https://www.domain
  3. http:// domain
  4. https:// domain
  5. 全部重定向到4. https://domain

    3和4都以4结束。

    1和2 - 不要以4结束。

    我还尝试使用s3存储桶和云端进行www到非www重定向,但不幸的是,这会导致证书问题。

    以下是我目前在nginx配置中的内容:

    server {
        listen 80;
        server_name www.{{ nginx_server_name }} {{ nginx_server_name }};
        return 301 https://{{ nginx_server_name }}$request_uri;
    }
    
    server {
      listen 443;
      server_name www.{{ nginx_server_name }}
    
      ssl on;
      charset utf-8;
      ssl_certificate     {{ certbot_output_dir }}/{{ letsencrypt_cert_filename }};
      ssl_certificate_key {{ certbot_output_dir }}/{{ letsencrypt_privkey_filename }};
      ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
      ssl_ciphers         'ECDHE-..........
      ssl_prefer_server_ciphers on;
    
      return 301 https://{{ nginx_server_name }}$request_uri;
    }
    
    server {
        listen              443;
        server_name         {{ nginx_server_name }};
        ssl on;
        charset utf-8;
    
        ssl_certificate     {{ certbot_output_dir }}/{{ letsencrypt_cert_filename }};
        ssl_certificate_key {{ certbot_output_dir }}/{{ letsencrypt_privkey_filename }};
    
        ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
       ssl_ciphers         'ECDHE-..........
        ssl_prefer_server_ciphers on;
    

1 个答案:

答案 0 :(得分:0)

您的配置似乎正确,但这些参数是什么? 也许这适合你:

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

这会将所有http请求转发到www.example.com和example.com到https://example.com,然后您还应该在https上创建一个主机名为www.example.com的侦听器,以相同的方式转发。 所以没有使用参数,还是因为混淆?