質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • nginx

    1049questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

www有りURLからwww無しURLへリダイレクト後、再度www無しURLを開くと「この接続ではプライバシーが保護されません」が表示される

解決済

回答 1

投稿

  • 評価
  • クリップ 2
  • VIEW 247

AWS_NGINX

score 4

EC2上にnginxサーバを構築中です。

wwwなしURL及びhttpsでのURL正規化したサイトを作成する予定の為、
http://www.hoge.com及びhttps://www.hoge.com、http://hoge.comにアクセスがあった場合に
https://hoge.comへリダイレクトさせようとしています。

http://hoge.com→https://hoge.comへのリダイレクトは想定通り動作しているようです。

www有りについてもchromeのシークレットウィンドウにて、初回は正しくリダイレクトするのですが、
リダイレクト後に再度www有りのhttpまたはhttpsアドレスをアドレス欄に直接入力すると
「この接続ではプライバシーが保護されません」が表示されます。
一度でもhttpsのwww無しURLに接続すると、その後www有りURL接続時に当該エラーが発生する模様です。

尚、当然ながらブラウザでアクセス前にエラーを出しているのでnginxのアクセスログ、エラーログは
出力されていません。

リダイレクト設定箇所

#httpアクセスをhttpsへリダイレクト
    server {
        listen  80;
        listen  [::]:80;
        server_name     hoge.com www.hoge.com;
        rewrite ^(.*)$ https://hoge.com$request_uri permanent;
#       rewrite ^ https://hoge.com$request_uri?;
    }
#https wwwへのアクセスをwwwなしにリダイレクト
    server {
        listen  443             ssl;
        listen  [::]:443        ssl;
        server_name     www.hoge.com;
        rewrite ^(.*)$ https://hoge.com$request_uri permanent;
#       rewrite ^ https://hoge.com$request_uri?;
    }

    server {
        listen  443             ssl http2 default_server;
        listen  [::]:443        ssl http2 default_server;
        server_name     hoge.com;
~~~~~~

試したこと

以下の方法によるリダイレクト
return 302 http...
rewrite ^ http...

補足情報(FW/ツールのバージョンなど)

Amazon Linux2
nginx/1.12.2
wwwについてはRoute53にてCNameを設定しています。

nginx.conf全文

user nginx;
worker_processes auto;
worker_rlimit_nofile 100000;

pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 2048;
    multi_accept on;
    use epoll;
}

http {
    server_tokens off;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    charset UTF-8;
    default_type text/html;
    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   10;
    client_header_timeout 10;
    client_body_timeout 10;
    reset_timedout_connection on;
    send_timeout 10;
    gzip on;
    gzip_http_version 1.0;
    gzip_disable "msie6";
    gzip_proxied any;
    gzip_min_length 1024;
    gzip_comp_level 6;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rs
s text/javascript application/javascript;
    open_file_cache max=100000 inactive=20s;
    open_file_cache_valid 30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors on;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

#httpアクセスをhttpsへリダイレクト
    server {
        listen  80;
        listen  [::]:80;
        server_name     hoge.com www.hoge.com;
        rewrite ^(.*)$ https://hoge.com$request_uri permanent;
#       rewrite ^ https://hoge.com$request_uri?;
    }
#https wwwへのアクセスをwwwなしにリダイレクト
    server {
        listen  443             ssl;
        listen  [::]:443        ssl;
        server_name     www.hoge.com;
        rewrite ^(.*)$ https://hoge.com$request_uri permanent;
#       rewrite ^ https://hoge.com$request_uri?;
    }

    server {
        listen  443             ssl http2 default_server;
        listen  [::]:443        ssl http2 default_server;
        server_name     hoge.com;

        root    /usr/share/nginx/html;
        index   index.php index.html index.htm;
        access_log      /var/log/nginx/access.log;
        error_log       /var/log/nginx/error.log;
        ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
        ssl_ciphers EECDH+AESGCM+AES128:EECDH+AESGCM:EECDH+AES128:EECDH+AES256;
        ssl_prefer_server_ciphers on;
        ssl_dhparam     /etc/ssl/certs/nginx/dhparam.pem;
        ssl_certificate         /etc/letsencrypt/live/hoge.com/fullchain.pem;
        ssl_certificate_key     /etc/letsencrypt/live/hoge.com/privkey.pem;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location ~ \.php {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_split_path_info ^(.+\.php)(.*)$;
                fastcgi_param PATH_INFO       $fastcgi_path_info;
                fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                fastcgi_param DATABASE_URL mysql://xxxxxxxx;
                include fastcgi_params;
        }

        location / {
                try_files $uri $uri/ /index.php?u=$uri&$args;
        }
    }
}

以上、宜しくおねがいします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

+2

リダイレクト要求前のブラウザ挙動の問題なので、nginxは無関係な予感がして調べたところ、
nginxではなくSSL証明書の問題でした。

letsencryptを使用していたので次のコマンドで、SSL証明書にwww.hoge.comを追加する事で、想定通り動作しました。
sudo /usr/local/bin/certbot-auto --expand -d hoge.com -d www.hoge.com

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • nginx

    1049questions

    nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

  • トップ
  • nginxに関する質問
  • www有りURLからwww無しURLへリダイレクト後、再度www無しURLを開くと「この接続ではプライバシーが保護されません」が表示される