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

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

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

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

640閲覧

nginx の http server confファイル設定

roswell

総合スコア17

nginx

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/12/20 07:56

Linux Mint の環境で、

Reminiscnece README.md
という、bookmark manger をインストールしたのですが、
nginx 経由でのアクセスがうまくいかず
どのようにすれば、いいのか困っています。
ご教示いただければと思います。

Nginx を用いない、単体での
runserver
に記載されている、
(venv) yama@jpx20120007:/reminiscence/venv/reminiscence$ python manage.py runserver 127.0.0.1:8000

gunicorn
に記載されている
(venv) yama@jpx20120007:
/reminiscence/venv/reminiscence$ gunicorn --max-requests 100 --worker-class gthread --workers 2 --thread 5 --timeout 300 --bind 0.0.0:8000 reminiscence.wsgi
は、正常に動いています。

同ページの
nginx を用いた場合の設定で、sample の server conf を自分の環境に合わせて、下記の様にしたのですが、
http://localhost/static は、"404 Not found"
http://127.0.0.1:8000 は、"ERR_CONNECTION_REFUSED"
になります。
Nginx は、正しく動作しており、http://localhost http://127.0.0.1
共に、"Welcome to nginx" 表示します。

nginx の reminisence の server conf ファイルは、下部になります。

runserverやgurnicon は、virtualenvで、user yamaで実行されているのに、
nginxの場合は、virtualenv ではなく、rootで実行されているからなのかな?
と推測しているのですが...
nginx の設定も今回初めてなので、解決方法が分からず、質問しています。

(venv) yama@jpx20120007:/etc/nginx/conf.d$ cat reminiscence.conf #worker_processes 2; #events { # worker_connections 1024; #} #http { # include mime.types; # default_type application/octet-stream; # sendfile on; # sendfile_max_chunk 512k; # keepalive_timeout 65; # proxy_read_timeout 300s; server { listen 80; server_name localhost; client_max_body_size 1024m; location /static/ { root /home/yama/reminiscence/venv/reminiscence; # root of project directory aio threads; } location = /favicon.ico { access_log off; log_not_found off; } location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; root /home/yama/reminiscence/venv/reminiscence; #root of project directory } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } #}

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

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

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

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

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

CHERRY

2018/12/21 00:45 編集

nginx にアクセスした際に /var/log/nginx/error.log に記録された内容を質問に そのまま追記してください。(ドメイン名、IPアドレス、ユーザー名等は例示用等で適宜置き換えてください。)
roswell

2018/12/21 08:26

cherry さん サポートありがとうございます。 下記の感じで、access.log には表示されますが、error.log には、何も出力されていません。 yama@jpx20120007:/etc/nginx$ sudo service nginx stop yama@jpx20120007:/etc/nginx$ sudo rm /var/log/nginx/access.log /var/log/nginx/error.log yama@jpx20120007:/etc/nginx$ sudo service nginx start yama@jpx20120007:/etc/nginx$ cat /var/log/nginx/error.log yama@jpx20120007:/etc/nginx$ tail -f /var/log/nginx/access.log ::1 - - [21/Dec/2018:17:24:26 +0900] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" ::1 - - [21/Dec/2018:17:24:37 +0900] "GET /static HTTP/1.1" 404 200 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
guest

回答2

0

自己解決

解決しました。

引用テキストgunicorn をコマンドラインで「終了」させた状態で、nginx を restart させて、

broswerより 127.0.0.1:8000 でアクセスしても、"reminscense" の画面が表示されないのです。
ひょっとして、gunicornで動作させておかなければいけないのですかね?

gunicorn で、"reminiscense" を動作させた状態で使うのですね。
てっきり、nginx の 設定ファイルで、server が勝手に動くと勘違いしていました。
別PCからも、browserで"reminiscence"の画面がでました。

投稿2018/12/21 09:25

roswell

総合スコア17

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

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

0

エラーログの内容が不明なので、推測で回答します。


http://localhost/static は、"404 Not found"

/home/yama/reminiscence/venv/reminiscence にあるファイルに nginx ユーザーでアクセス可能ですか?

http://127.0.0.1:8000 は、"ERR_CONNECTION_REFUSED"

proxy_pass は、リクエストを中継するだけなので、転送先の 127.0.0.1:8000 が稼働していて接続できないとアクセスできません。

python manage.py runserver 127.0.0.1:8000 で、起動した状態にして、nginx の URL にアクセししていますか?

Firewall で、ポートを塞いでいたりしませんか?

nginx の設定を変更した場合、nginx の再起動が必要ですが再起動していますか? ( reload でも反映されたと思います。)

投稿2018/12/21 00:52

編集2018/12/21 00:55
CHERRY

総合スコア25171

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

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

roswell

2018/12/21 08:44

Cherry さん 一つづつ回答書いていきますので、ご教示お願いします。 > nginx ユーザーでアクセス可能ですか? nginx.conf 中に user www-data; があるので、user 'www-data' で実行されるので、user 'yama' のホーム以下のファイルにアクセスと実行ができないのが原因ですかね? コマンドライン上で、virtualenv で、gunicorn で実行可能なユーザーが、'yama' になので、nginx 設定ファイル中で、 user 'yama' で実行させたいのですが、設定方法はありますでしょうか?
roswell

2018/12/21 08:45

>proxy_pass は、リクエストを中継するだけなので、転送先の 127.0.0.1:8000 が稼働していて接続できないとアクセスできません。 nginx+gunicornで動かそうとしているserverが、同一ホストでも駄目なんですね。そのあたりがイマイチ把握できていなくて... それ以前に、前述ののユーザー設定がだめなのかもしれが...
roswell

2018/12/21 08:54

>python manage.py runserver 127.0.0.1:8000 で、起動した状態にして、nginx の URL にアクセししていますか? コマンドラインで、python manager.py runserver 127.0.0.1:8000 で動かした状態で、問題なく"reminiscence"の画面が表示され、動作もします。 gunicorn をコマンドラインで実行させた状態でも、同様、正常に動作します。 gunicorn をコマンドラインで「終了」させた状態で、nginx を restart させて、 broswerより 127.0.0.1:8000 でアクセスしても、"reminscense" の画面が表示されないのです。 ひょっとして、gunicornで動作させておかなければいけないのですかね?
roswell

2018/12/21 08:55

> Firewall で、ポートを塞いでいたりしませんか? 前述したとおり、同一ホストでも駄目なんですね。そのあたりがイマイチ把握できていなくて...
roswell

2018/12/21 08:55

>nginx の設定を変更した場合、nginx の再起動が必要ですが再起動していますか? ( reload でも反映されたと思います。) 実行済みです。
Meganezaru

2018/12/21 09:28

gunicornとnginxを同時に稼働させる必要がありますよ! CHERRYさんの回答されている、「中継されるだけ」というのが、その理由です。(実態はgunicorn)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問