web-dev-qa-db-ja.com

NginxとSSL接続エラー

サイトをHTTPからHTTPSに移行しようとしていますが、nginx(バージョン:1.10.3)構成が機能していないようです。

次の動作が望ましいです。

  • http://www.example.com/path/to/contenthttps://example.com/path/to/contentにリダイレクトする必要があります
  • http://example.com/path/to/contenthttps://example.com/path/to/contentにリダイレクトする必要があります
  • https://www.example.com/path/to/contenthttps://example.com/path/to/contentにリダイレクトする必要があります

私の現在の設定では、ブラウザはHTTPSを使用してサイトに接続しません。

server {
    listen 80;
    listen [::]:80;

    server_name www.example.com example.com;

    # redirects both www and non-www to https
    rewrite ^(.*) https://www.example.com$1 permanent;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name example.com;

    # redirects non-www to www
    rewrite ^(.*) https://www.example.com$1 permanent;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;

    charset utf-8;

    # rest of my config
}
  • 上記の動作を実現するには、何を変更する必要がありますか?
  • ページを「ライブ」に保ち、テストさせるために、最初のステップでHTTPリクエストを受け入れる(そして後でリダイレクトする)ことは可能ですか?
  • 私のサイトのSEOランキングは非常に優れているため( " http://www.example.com "としてインデックス付けされています)、適切にリダイレクトする必要があります。
1
gregory

この構成はあなたが求めるものを作ります:

server {
    listen 80;
    listen [::]:80;

    server_name www.example.com example.com;

    # redirects both www and non-www to https
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name www.example.com;

    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;

    # redirects www to non-www
    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name example.com;

    include snippets/ssl-example.com.conf;
    include snippets/ssl-params.conf;

    charset utf-8;

    # rest of my config
}

rewritereturnに変更しました。これは、もう少し効率的だからです。 returnでは、$request_uriを使用して、リクエストパスと引数をリダイレクトURLに取り込む必要があります。

次に、server_name example.com;listen 443;ブロックに変更してサイトの実際のコンテンツを提供し、server_name www.example.com;listen 443;に変更してリダイレクトしました。

1
Tero Kilkanen

以下の方法を使用して試して、残りのSSL情報を更新してください。

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

また、sslの場合は、sslキーパスを指定します。

server {  
 listen   443 ssl;
 ssl on;  
 ssl_prefer_server_ciphers   on;  
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;  
  ssl_certificate      /path of certificate;  
 ssl_certificate_key  /path of server.key;
}
1
anand