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

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

新規登録して質問してみよう
ただいま回答率
85.48%
nginx

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

Docker

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

Q&A

解決済

1回答

8778閲覧

【Docker】nginxを立ち上げ時に0.0.0.0:80 failed (13: Permission denied)

pipo

総合スコア16

nginx

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

Docker

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

0グッド

0クリップ

投稿2018/12/09 15:11

編集2018/12/12 15:46

Dockerでnginxを用いたプロキシサーバを作ろうとしています。
ルートのままでは嫌なので、www-dataユーザでこれを立ち上げようとするとエラーが出てしまいます。

調べてみると80番ポートを使うことが問題のようなので、8081ポートを使うようにしました。
nginxの設定ファイルは2つ用意していて、
./proxy/nginx.conf
./proxy/conf.d/default.conf
を使用しています。

このうち、listenは
./proxy/conf.d/default.confで指定しています。

しかし、実行してみると相変わらず

Error

12018/12/09 23:38:30 [emerg] 1#1: bind() to 0.0.0.0:80 failed (13: Permission denied) 2nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied)

と出てしまいます。。。

よい解決方法を教えていただきたいです。
よろしくお願いします。

現在の構築環境です。

dockercompose

1version: "3" 2 3services: 4 proxy: 5 build: ./proxy 6 container_name: my_proxy 7 volumes: 8 - ./proxy/conf.d:/etc/nginx/conf.d 9 - ./proxy/nginx.conf:/etc/nginx/nginx.conf 10 - ./proxy/html:/usr/share/nginx/html 11 links: 12 - nginx:nginx 13 ports: 14 - 80:8081 15 environment: 16 TZ: "Asia/Tokyo"

nginxconf

1# user nginx; 2worker_processes 1; 3 4error_log /var/log/nginx/error.log warn; 5pid /var/run/nginx.pid; 6 7events { 8 worker_connections 1024; 9} 10 11http { 12 13 include /etc/nginx/mime.types; 14 default_type application/octet-stream; 15 16 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' 17 '$status $body_bytes_sent "$http_referer" ' 18 '"$http_user_agent" "$http_x_forwarded_for"'; 19 20 access_log /var/log/nginx/access.log main; 21 22 sendfile on; 23 #tcp_nopush on; 24 25 keepalive_timeout 65; 26 27 #gzip on; 28 29 include /etc/nginx/conf.d/*.conf; 30 31 proxy_cache_path /var/cache/nginx/proxy_cache levels=1:2 keys_zone=proxy:10m max_size=1g inactive=1d; 32 proxy_temp_path /var/cache/nginx/temp 1 2; 33 34 upstream myapp { 35 server nginx:8080; 36 } 37}

defaultconf

1server { 2 listen 8081; 3 charset utf-8; 4 server_name localhost; 5 6 location / { 7 8 proxy_pass http://myapp; 9 proxy_redirect default; 10 root /usr/share/nginx/html; 11 index index.html index.htm; 12 } 13 14 error_page 500 502 503 504 /50x.html; 15 location = /50x.html { 16 root /usr/share/nginx/html; 17 } 18}

Dockerfile

1FROM nginx 2 3# ディレクトリオーナーをwww-dataに変更 4RUN touch /var/run/nginx.pid && \ 5 chown -R www-data:www-data /var/run/nginx.pid && \ 6 chown -R www-data:www-data /var/cache/nginx 7 8USER www-data 9 10CMD ["nginx", "-g", "daemon off;","-c","/etc/nginx/nginx.conf"]

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TaichiYanagiya

2018/12/13 13:37

conf.d/ 以下に default.conf 以外のファイルがあって、"listen 80" になっていませんでしょうか? master プロセスだけ root で動かしてもいいと思いますが。
pipo

2018/12/13 13:53

ありがとうございます! バックアップ用にdefault.conf_bk_defというファイルを置いており、その中身が"listen 80"でした。 nginx.conf内の"include /etc/nginx/conf.d/*.conf;" という記述は.confで終わるファイルを読み込むものだと思い込んでいたので影響はないかと考えていたのですが試しにのけてみたらうまくいきました! 初歩的なミスでお恥ずかしいです。 本当に助かりました! ありがとうございました!!
DaichiYasuda

2018/12/16 07:48

rootユーザを使用することを避けたい理由はなんでしょうか? ※Dockerコンテナにログインされた時点で、ホストは乗っ取られているので。。。 また80ポートを使用することが問題だった。というのはどういったエラー内容からそう判断されたのでしょうか?
pipo

2018/12/16 07:57

rootユーザを避けたかったのは、セキュリテイ的に危ないからと思い込んでいたのですが、masterプロセスはrootのまま運用しても問題ないのですね。。。 80ポートを使用することが問題だとわかったのは、エラー内容からと、一般ユーザでは1024ポート以下は使用できないという情報をブログで見かけたからです。
pipo

2018/12/16 07:58

すみません、こちらの問題は解決していました。 TaichiYanagiyaさんのアドバイスを元に自己解決方法を記入しておきます。
DaichiYasuda

2018/12/16 08:01

Dockerを使って開発、本番運用していますが一般ユーザを使用するメリットが見つけられず、dockerfileに書くコードが多くなるのでrootユーザで実行しています。
guest

回答1

0

自己解決

バックアップ用にdefault.conf_bk_defというファイルを置いており、その中身が"listen 80"でした。
nginx.conf内の"include /etc/nginx/conf.d/*.conf;"
という記述は.confで終わるファイルを読み込むものだと思い込んでいたので影響はないかと考えていたのですが試しにのけてみたらうまくいきました!

投稿2018/12/16 07:59

pipo

総合スコア16

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問