2017-06-05 11 views
1

私はnginxのは、HTTPリダイレクト//例(SSL/HTTPSとのNON-WWW)

  1. http://www.domain
  2. https://www.domain
  3. http:// domain
  4. を取得しようとしていますすべての
  5. https:// domain

4. https://domain

にリダイレクト

3及び4の両方4

1及び2で終わる - 4.

で終了していない私はまた、S3バケットとCloudFrontをを用いた非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; 

答えて

0

あなたの設定は正しいようだが、それらのパラメータがありますか? は多分これはあなたのために働く:

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

これはあなたがしても、ホスト名www.example.comとHTTPS上のリスナーを作成する必要がありますhttps://example.comにwww.example.comとexample.comへのすべてのHTTP要求を転送します同じ方法で転送します。 パラメータを使用しない、または難読化のためのものでしたか?

+0

こんにちはステファン パラメータがansible変数 nginx_server_nameです:domain.com はまた、第2のサーバブロックは、あなたが何を説明していないのだろうか? つまり、これらの数行はhttpsでホスト名www.domain.comでリッスンします サーバー{ listen 443; server_name www。{{nginx_server_name}} ssl on; –

+0

return 301 ...行にドメインを指定すると、問題が解決されます。それはパラメータなので常に一致します。 – Stephan

関連する問題