使用 nginx 为我的 django 站点安装奇怪的 uwsgi 挂载点

Strange uwsgi mountpoint for my django site with nginx

我的网站遇到了一个奇怪的问题(nginx1.7+uwsgi2.0+django1.6)。

今天我看到我的 uwsgi 日志中有一些奇怪的日志条目。 片段在这里:

Mon Aug 31 10:43:17 2015 - WSGI app 1 (mountpoint='zc.qq.com|') ready in 0 seconds on interpreter 0xf627c0 pid: 18360
zc.qq.com {address space usage: 421933056 bytes/402MB} {rss usage: 102522880 bytes/97MB} [pid: 18360|app: 1|req: 1/7] 61.132.52.107 () {42 vars in 684 bytes} [Mon Aug 31 10:43:17 2015] GET /cgi-bin/common/attr?id=260714&r=0.6131902049963026 => generated 0 bytes in 6113 msecs (HTTP/1.1 301) 4 headers in 210 bytes (2 switches on core 0)
zc.qq.com {address space usage: 421933056 bytes/402MB} {rss usage: 102522880 bytes/97MB} [pid: 18360|app: 1|req: 2/8] 61.132.52.105 () {44 vars in 986 bytes} [Mon Aug 31 10:43:29 2015] GET /cgi-bin/common/attr?id=260714&r=0.1676001222494321 => generated 0 bytes in 3 msecs (HTTP/1.1 301) 4 headers in 210 bytes (2 switches on core 0)

实际上,zc.qq.com与我的网站无关。 那么,这家伙是怎么进入我的服务器的? 它作为一个 wsgi 应用程序放在这里,因此,有时会与我自己的 django 应用程序一起重新启动,因此,有时 django 应用程序需要超过 5 秒才能响应 http 请求。

我看到奇怪应用程序的 pid 是 18360。所以,这里:

[root@localhost uwsgi]# ps -ef|grep uwsgi
root     18352     1  0 10:40 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi2.xml
root     18353 18352  0 10:40 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi2.xml
root     18354 18352  0 10:40 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi2.xml
root     18355 18352  0 10:40 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi2.xml
root     18356 18352  0 10:40 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi2.xml
root     18357 18352  0 10:40 ?        00:00:12 uwsgi -x /home/uwsgi/uwsgi2.xml
root     18358 18352  0 10:40 ?        00:00:00 uwsgi -x /home/uwsgi/uwsgi2.xml
root     18359 18352  0 10:40 ?        00:00:13 uwsgi -x /home/uwsgi/uwsgi2.xml
root     18360 18352  1 10:40 ?        00:00:18 uwsgi -x /home/uwsgi/uwsgi2.xml
root     18871 18818  0 11:07 pts/2    00:00:00 grep uwsgi

它来自 uwsgi...但是这里是 uwsgi 配置文件:

<uwsgi>
  <socket>/var/run/uwsgi.socket</socket>
  <listen>100</listen>
  <master>true</master>
  <vhost>true</vhost>
  <no-site>true</no-site>
  <pidfile>/usr/local/nginx/uwsgi.pid</pidfile>
  <processes>8</processes>
  <profiler>true</profiler>
  <memory-report>true</memory-report>
  <enable-threads>true</enable-threads>
  <logdate>true</logdate>
  <limit-as>6048</limit-as>
  <daemonize>/home/django.log</daemonize>
</uwsgi>

而且,这里是 nginx.conf 中的片段(域名只是示例)

server {
        listen  80;
        server_name www.mysite.com;
        location / {
            uwsgi_pass   unix:///var/run/uwsgi.socket;
            include     uwsgi_params;
            uwsgi_param UWSGI_CHDIR /home/mysite;
            uwsgi_param UWSGI_SCRIPT wsgi;
           access_log  off;
        }
        location /static/ {
        root            /home/mysite/;
        access_log      off;
        log_not_found   off;
        autoindex on;
    }
 }

因此,与 zc.qq.com 或其他 strage 域相关的任何配置文件中都没有任何内容(我也看到 proxyjudge.info)。

有人打过这个吗?

谢谢。 卫斯理

这是因为您启用了虚拟主机和动态应用程序,但您没有从 nginx 端进行任何检查。对未配置(在 uWSGI 中)域的第一个请求将导致加载一个新的应用程序