如何验证传入请求是否通过 nginx 到达 gunicorn-flask

如何验证传入请求是否通过 nginx 到达 gunicorn-flask

我正在运行 nginx、gunincorn(以启动 flask)。当我终止 nginx 时,nginx 测试页面消失,但 gunicorn/flask 应用程序继续提供服务。

  1. 这是预料之中的吗?
  2. 我如何确保 gunicorn/nginx 协同工作?
  3. 我还检查了 nginx 访问日志,没有看到对 gunicorn/flask 绑定的端口的请求。

我的过程

  1. 安装 nginx
  2. 安装 gunicorn
  3. 设置 nginx

Nginx 设置

cd /etc/nginx
mkdir sites-available
mkdir sites-enabled
vim /sites-available/my_site
server {
    location / {
        proxy_pass http://localhost:9000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}
dzdo ln -s ../sites-available/my_site my_site

Nginx 配置

user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log;
pid        /run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    keepalive_timeout  65;
    include /etc/nginx/conf.d/*.conf;
    index   index.html index.htm;
    server {
        listen       90;
        server_name  localhost;
        root         /usr/share/nginx/html;

        location / {
        }

        error_page  404              /404.html;
        location = /40x.html {
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
        }
    }

    server {
       listen 9001;
       server_name localhost;
       root /tmp/html/;

       location / {
       }
    }
}

Gunicorn 启动

gunicorn –bind 0.0.0.0:9000 “my_site.driver:create_app()” &

答案1

  1. 是的,因为 nginx 和 gunicorn 是不同的进程。当你杀死 nginx 进程时,gunicorn 进程仍在运行。

  2. 您可以使用监控工具,例如 naemon。您可以分别检查 nginx 和 gunicorn 进程,并确保它们正常运行。

  3. 这也是正常的。因为默认的 nginx 日志配置不提供此信息。(我不知道这是否可能)

相关内容