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

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

ただいまの
回答率

90.53%

  • nginx

    836questions

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

  • Docker

    701questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

dockerでnginxにアクセスできない

解決済

回答 1

投稿

  • 評価
  • クリップ 2
  • VIEW 1,293

前提・実現したいこと

初めて質問させていただきます。 
dockerでnginxをインストールしたのですが、windows2010からdockerにWebでアクセスすると
エラーになりました。
ただし、teratermでdockerサーバーにログインしてcurlコマンドを実行した場合はエラーにならないです。

以下のような手順で設定を行いましたが、何か問題があるのか教えていただきませんでしょうか。

・ネットワーク
docker network create --subnet=172.18.0.0/16 br0

・docker起動
docker run --privileged -d -it --net=br0 --ip=172.18.0.21 -p 4080:80  -p 4081:81 -p 40443:443 -v/usr/local/hhvm:/var/www/html --hostname test01 --name test01 centos:latest /sbin/init

docker exec -it test01  /bin/bash

vi /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=0
enabled=1


yum -y install nginx

mkdir /usr/local/ssl
cd /usr/local/ssl
openssl genrsa 2048 > server.key
openssl req -new -key server.key > server.csr
openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt

vi /etc/nginx/nginx.conf

user nginx;
worker_processes 1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
   worker_connections 1024;
}


http {
   include /etc/nginx/mime.types;
   default_type application/octet-stream;

   log_format main '$remote_addr - $remote_user [$time_local] ""$request"" '
              '$status $body_bytes_sent ""$http_referer"" '
              '""$http_user_agent"" ""$http_x_forwarded_for"" '
              '""$request_time"" ""$upstream_response_time"" '
              '""$upstream_addr""';

   access_log /var/log/nginx/access.log main;

   sendfile on;
   tcp_nopush on;

   keepalive_timeout 65;

   gzip on;
   gzip_types text/css text/javascript;
   expires 30d;
   open_file_cache max=100 inactive=10s;

   server_tokens off;

   add_header X-Frame-Options "SAMEORIGIN";

   include /etc/nginx/conf.d/*.conf;
}

vi /etc/nginx/conf.d/dashboard.conf

server {
    listen 80;
    server_name dashboard.test.jp;
    return 301 https://$host$request_uri;
}

server {
        listen                    443 default ssl;
        server_name               dashboard.test.jp;
        root                      /var/www/html/dashboard/public;  # whatever is yours
        index                     index.hh;
        client_max_body_size      31M;
        client_body_buffer_size   32k;
        ssl_certificate           /usr/local/ssl/server.crt;
        ssl_certificate_key       /usr/local/ssl/server.key;
        ssl_session_cache         shared:SSL:1m;
        ssl_session_timeout       5m;
        ssl_ciphers               HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
        expires                   -1;

        location / {
            #auth_basic            "Basic Auth";
            #auth_basic_user_file  "/etc/nginx/.htpasswd";
            try_files             $uri $uri/ @handler;
        }

        location @handler {
            rewrite ^ /index.hh?/$request_uri;
        }

        location ~ ^/index.hh$ {
            fastcgi_pass          127.0.0.1:9001;
            fastcgi_index         index.hh;
            fastcgi_param         SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include               fastcgi_params;
        }

        location ~ \.php$ {
            deny all;
        }

        location ~* ^/(modules|application|system) {
            return 403;
        }

        location ~ .*\.(jpg|jpeg|gif|png|css|js|ico|woff|pdf|ppt|pptx|doc|docx|xls|xlsx|txt) {
            expires     10d;
            try_files   $uri $uri/ @handler;
        }
        location /api/v2 {
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:9001;
        }

        error_page 404            /index.hh;
        error_page 500            /index.hh;
        error_page 501 502 503 504 505 506 507 508 509 510 /error.html;

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
            deny  all;
        }
    }

vi /etc/nginx/conf.d/dashboard_admin.conf

server {
    listen 80;
    server_name admin.dashboard.test.jp;
    return 301 https://$host$request_uri;
}

server {
        listen                    443 ssl;
        server_name               admin.dashboard.test.jp;
        root                      /var/www/html/dashboard_admin/public;  # whatever is yours
        index                     index.hh;
        client_max_body_size      31M;
        client_body_buffer_size   32k;
        ssl_certificate           /usr/local/ssl/server.crt;
        ssl_certificate_key       /usr/local/ssl/server.key;
        ssl_session_cache         shared:SSL:1m;
        ssl_session_timeout       5m;
        ssl_ciphers               HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        ssl_protocols             TLSv1 TLSv1.1 TLSv1.2;
        expires                   -1;

        location / {
            #auth_basic            "Basic Auth";
            #auth_basic_user_file  "/etc/nginx/.htpasswd";
            try_files             $uri $uri/ @handler;
        }

        location @handler {
            rewrite ^ /index.hh?/$request_uri;
        }

        location ~ ^/index.hh$ {
            fastcgi_pass          127.0.0.1:9001;
            fastcgi_index         index.hh;
            fastcgi_param         SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include               fastcgi_params;
        }

        location ~ \.php$ {
            deny all;
        }

        location ~* ^/(modules|application|system) {
            return 403;
        }

        location ~ .*\.(jpg|jpeg|gif|png|css|js|ico|woff|pdf|ppt|pptx|doc|docx|xls|xlsx|txt) {
            expires     10d;
            try_files   $uri $uri/ @handler;
        }
        location /api/v2 {
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:9001;
        }

        error_page 404            /index.hh;
        error_page 500            /index.hh;
        error_page 501 502 503 504 505 506 507 508 509 510 /error.html;

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        location ~ /\.ht {
            deny  all;
        }
    }

発生している問題・エラーメッセージ

windowsPCから以下でアクセスする場合、サーバーが見つかりませんでした
というメッセージが表示されます。
teratermの場合はエラーにならないです。

http://localhost:4081

なおcurlコマンドで実行すると以下のようなエラーになります。
$ curl localhost:4081
curl: (56) Recv failure: Connection was reset

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • TaichiYanagiya

    2017/04/05 00:52

    https://ホスト名:40443/ にアクセスするとどうなりますでしょうか。nginx は 443 番ポートで待ち受けているようなので。

    キャンセル

  • HiroyukiTSUMAI

    2017/04/05 08:41

    40443ポートでアクセスすると、「curl: (56) Recv failure: Connection was reset 」エラーが発生します。

    キャンセル

  • CHERRY

    2017/04/05 09:42

    localhost ではなく、docker コンテナに割り当てた IPアドレスで、接続するとどうなるでしょうか?

    キャンセル

  • HiroyukiTSUMAI

    2017/04/05 09:49

    docker コンテナに割り当てられたIP(172.18.0.2)だとエラーになりました。 ただ、dockerVMのIP(192.168.99.100)だと問題なくアクセスすることができました。 VMからポートフォワードでコンテナのポートにアクセスするようでした。 ご回答ありがとうございます。

    キャンセル

回答 1

check解決した方法

+1

dockerVMのIP(192.168.99.100)だとアクセスすることができます。
VMからポートフォワードでコンテナのポートにアクセスするようでした。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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

  • nginx

    836questions

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

  • Docker

    701questions

    Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです