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

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

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

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

Docker

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

878閲覧

nginxでのエラーについて

nyonozi

総合スコア1

nginx

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

Docker

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/06/10 00:27

編集2020/06/11 12:55

前提・実現したいこと

nginxをDockerで作成時に下記のようなエラーが出ていて表示することができません。

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

sent in stderr: "Primary script unknown" while reading response header from upstream

該当のソースコード

Dockerfile

FROM debian:jessie RUN apt-get update && \ apt-get install -y nginx && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* COPY docker/nginx/nginx.conf /etc/nginx/ COPY docker/nginx/app.conf /etc/nginx/sites-available/ RUN ln -s /etc/nginx/sites-available/app.conf /etc/nginx/sites-enabled/app RUN rm /etc/nginx/sites-enabled/default RUN echo "upstream php-upstream { server php-fpm:9000; }" > /etc/nginx/conf.d/upstream.conf RUN usermod -u 1000 www-data COPY --chown=www-data:www-data ./src /var/www/html CMD ["nginx"] EXPOSE 80 EXPOSE 443

app.conf

server { root /var/www/html; location / { try_files $uri @rewriteapp; } location @rewriteapp { rewrite ^(.*)$ /index.php/$1 last; } location ~ ^/(.+.php)(/|$) { fastcgi_pass php-upstream; fastcgi_split_path_info ^(.+.php)(/.*)$; include fastcgi_params; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; fastcgi_param HTTPS off; } location ~* ^.+.(woff|svg|jpg|jpeg|gif|png|ico|css|js|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|mov|xml|flv|f4v)$ { access_log off; log_not_found off; add_header Cache-Control public; expires 24h; } }

nginx.conf

user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 2048; multi_accept on; use epoll; } http { server_tokens off; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 15; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; access_log off; error_log off; gzip on; gzip_disable "msie6"; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; open_file_cache max=100; } daemon off;

試したこと

fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
に変更すると治るという記事もありましたがダメでした。

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

画面には404のFile not found.が出ております。

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

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

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

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

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

guest

回答1

0

php-upstreamの定義が記述されていません

tcp/ipかsocket通信かphp-fpmの設定次第ですが、そちらの環境に合わせてください

投稿2020/06/10 02:31

yukky1201

総合スコア2751

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

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

nyonozi

2020/06/10 02:35

RUN echo "upstream php-upstream { server php-fpm:9000; }" > /etc/nginx/conf.d/upstream.conf Dockerfileも追記しました。 こちらの記述では不足でしょうか?
yukky1201

2020/06/10 08:09

追記したことによる動作の変化をおしらせください
nyonozi

2020/06/10 23:45

もともとこの文言が入っておりましたので変更ありません。
yukky1201

2020/06/11 06:14

確認事項ですが ・nginxのaccess.logおよびerror.logを確認してほしい(質問にも追記してください)のですが想定ファイルにアクセスしていますか ・nginxのconfに「server_name」が指定されていませんが、違う設定ファイルが使用されていたり(/etc/nginx/conf.d/****.confがあったり)しませんか ※CentOS環境で実験したのですが、/etc/nginx/conf.d/default.confがあったせいで、同じく404エラーになり、無効化したらphp表示が成功しました
nyonozi

2020/06/11 08:57

・nginxのconfに「server_name」が指定されていませんが、違う設定ファイルが使用されていたり server_nameは指定なしにしていますが問題になるのでしょうか? (/etc/nginx/conf.d/****.confがあったり)しませんか cd /etc/nginx/conf.d/upstream.conf があります。 RUN echo "upstream php-upstream { server n-api-php-fpm:9000; }" > /etc/nginx/conf.d/upstream.conf dockerfileでこのように指示しています。 よろしくお願いします。
yukky1201

2020/06/11 09:17

今の確認ポイントは、質問に記載されているconfが本当に使われているかどうかです。
nyonozi

2020/06/11 12:26

server_name www.example.com; のように指定していれば、http://www.example.com/のリクエストの場合に有効なconfになります。複数confがある場合に使い分けが可能です。 指定が無ければデフォルト(server_name localhost; や server_name _;が記述されている)のconfが適用されてしまうのでそれがないかの確認でした。 ================================================= ご説明ありがとうございます。 今のところそのようにしていないのでデフォルトで全て適用させている状況です。
bsdfan

2020/06/11 12:27

nginx.confにincludeの文がないですが、それでもconf.d以外のファイルが読み込まれているのでしょうか?
nyonozi

2020/06/11 12:53

ログはどう表示されてますか。 ================================================= nginxのログはこのように出ています。 Primary script unknown" while reading response header from upstream, client: XXXXXXX, server
nyonozi

2020/06/11 12:56

nginx.confにincludeの文がないですが、それでもconf.d以外のファイルが読み込まれているのでしょうか? ================================================= 読み込ませているのは /etc/nginx/app.conf /etc/nginx/sites-available/nginx.conf の二つと /etc/nginx/conf.d/upstream.conf になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問