2017-08-19 4 views
0

私はGunicornとNginxでホストしようとしているFlaskアプリケーションを持っています。私はいくつかのチュートリアルに続き、Nginxに "Welcome to Nginx"ページのレンダリングを停止させるようなことはできません。NginxはGunicornにトラフィックを転送しません

私はすでにSupervisorが3人のGunicornワーカーを正常に立ち上げ、Nginxもバックグラウンドで実行されていることを確認しました。 SSLは動作確認され、Nginxはポート443でトラフィックを取得します.GunicornとNginxが共有するソックスを所有しているユーザーと同じグループにNginxを追加しようとしました。

スーパーバイザーがGunicornを起動するために使用するbashスクリプトです。これは動作確認されています。

#!/bin/bash 

NAME="Simon"         
FLASKDIR=/var/www/Simon    
SOCKFILE=/var/www/Simon/simon.sock 
USER=glen           
GROUP=glen         
NUM_WORKERS=3 
FLASK_SETTINGS_MODULE=config.py   
FLASK_WSGI_MODULE=Simon.wsgi 
echo "Starting $NAME as `whoami`" 

# Activate the virtual environment 
cd $FLASKDIR 
source Simon/bin/activate 
export FLASK_SETTINGS_MODULE=$FLASK_SETTINGS_MODULE 
export PYTHONPATH=$FLASKDIR:$PYTHONPATH 

# Create the run directory if it doesn't exist 
RUNDIR=$(dirname $SOCKFILE) 
test -d $RUNDIR || mkdir -p $RUNDIR 

exec gunicorn Simon:simon \ 
    --name $NAME \ 
    --workers $NUM_WORKERS \ 
    --user=$USER --group=$GROUP \ 
    --bind=unix:$SOCKFILE \ 
    --log-level=debug \ 

このサイトの設定:

upstream simon_server { 
    # fail_timeout=0 means we always retry an upstream even if it failed 
    # to return a good HTTP response (in case the Unicorn master nukes a 
    # single worker for timing out). 

    server unix:/var/www/Simon/simon.sock fail_timeout=0; 
} 

server { 

    listen 443 ssl; 
    server_name glencoverx.com; 

    client_max_body_size 4G; 

    access_log /var/www/Simon/logs/nginx-access.log; 
    error_log /var/www/Simon/logs/nginx-error.log; 

    location /static/ { 
     alias /var/www/Simon/static/; 
    } 

    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Proto https; 
     proxy_set_header Host $http_host; 
     proxy_redirect off; 

    if ($scheme != "https") { 
     return 301 https://$host$request_uri;} 

} 
    ssl_certificate /etc/letsencrypt/live/glencoverx.com/fullchain.pem; # managed by Certbot 
    ssl_certificate_key /etc/letsencrypt/live/glencoverx.com/privkey.pem; # managed by Certbot 
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot 
} 

変なふうに十分な、ログは何の問題を示しません。私はNginxのデフォルトのサイト設定を完全に削除し、そのシンボリックリンクを削除しました。なぜNginxがGunicornと通信しないのか分かりません。

答えて

0

最初に、次のようなことをすれば役に立ちます: listen 443 default ssl; これは、そのサイトをデフォルトにします。

service nginx restartをまだお持ちでない場合は、キャッシュが消去されていることを確認してください。 telnetを使ってgetを実行して、まだ有効になっていることを確認してください。

nginx/conf.dとサイト対応のディレクトリを確認して、シンボリックリンクまたはデフォルトのWebサイトがまだ存在するかどうかを確認してください。

+0

あなたの提案が原因であるかどうかは不明ですが、ポート80がリダイレクトされなくなったため、接続が突然拒否されました。 httpsでドメインに直接移動すると、502になります。 – smallpants

+0

443に固定されているように見えます。私はプロキシをソックスに渡していませんでした。しかし、今はhttpsを直接使わないと接続できません。 – smallpants

関連する問題