あなたの場合、gunicorn は Web サーバーであるため、Nginx は HTTP リクエストを Nginx から gunicorn に渡すバック プロキシとして機能します。
そこで、同じマシン上で実行する単純な Nginx と Gunicorn の構成の手順をここに示します。
/etc/nginx/nginx.confに移動し、http{} の下に以下があることを確認します。
http{
# other configurations (...)
include /etc/nginx/sites-enabled/*;
}
ここで、/etc/nginx/sites-enabled/mysite.conf にファイルを含めます。ここで、リクエストを gunicorn アプリにプロキシします。
server {
listen 80 default; # this means nginx will be
# listening requests on port 80 and
# this will be the default nginx server
server_name localhost;
# declare proxy params and values to forward to your gunicorn webserver
proxy_pass_request_headers on;
proxy_pass_request_body on;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 120s;
location / {
# here is where you declare that every request to /
# should be proxy to 127.0.0.1:8000 (which is where
# your gunicorn will be running on)
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://127.0.0.1:8000/; # the actual nginx directive to
# forward the request
}
}
わかりました。この時点では、127.0.0.1:80 へのすべてのリクエストが 127.0.0.1:8000 に渡されるプロキシとして機能する Nginx しかありません。
- ここで、 Gunicorn Web サーバーを構成します。
通常、構成ファイルを使用する方法で、Gunicorn 構成ファイルは通常の python ファイルにすることができます。ここで、好きな場所にファイルを作成します。このファイルは/etc/gunicorn/mysite.pyになると想定します
workers = 3 # number of workers Gunicorn will spawn
bind = '127.0.0.1:8000' # this is where you declare on which address your
# gunicorn app is running.
# Basically where Nginx will forward the request to
pidfile = '/var/run/gunicorn/mysite.pid' # create a simple pid file for gunicorn.
user = 'user' # the user gunicorn will run on
daemon = True # this is only to tell gunicorn to deamonize the server process
errorlog = '/var/log/gunicorn/error-mysite.log' # error log
accesslog = '/var/log/gunicorn/access-mysite.log' # access log
proc_name = 'gunicorn-mysite' # the gunicorn process name
OK、すべての設定が完了しました。あとはサーバーを起動するだけです。
gunicorn を起動し、使用するアプリと構成ファイルを指定します。コマンド ラインおよびmyapp.pyファイルが配置されているフォルダーから、次のコマンドを実行します。
gunicorn -c /etc/gunicorn/mysite.py mysite:app
あとはnginxを起動するだけです。
/etc/init.d/nginx start
また
service nginx start
お役に立てれば。