一人 nginx 勉強会 第二回

nginx を Reverse Proxy として使ってみる。

参考資料

Django pod serwerem nginx
http://www.python.rk.edu.pl/w/p/django-pod-serwerem-nginx/
#英語サイトがあったはず ... 今回はここのぱくりです。

Django on nginx
http://www.rkblog.rk.edu.pl/w/p/django-nginx/
# 英語サイト発見。

nginx + lighttpd + scgi + django

とりあえずプロセス画像を張ってみたけど特に役に立たない。

Reverse Proxy
Reverse Proxy posted by (C)voluntas

Reverse Proxy として nginx を使っています。
lighttpd + scgi でシンプルに Django を起動。

ポート番号

  • nginx:80
  • lihttpd:8000
  • scgi:8080

lihgttpd + scgi で Django は「一人 lihgttpd 勉強会 第一回」にて。

Reverse Proxy 用の nginx.conf、Django メディアファイルもこっそり提供。

nginx.conf

user nginx nginx;

worker_processes 2;

error_log logs/error_log debug;

events {
  worker_connections 1024;
#  use epoll; 
}

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

  client_header_timeout 10m;
  client_body_timeout 10m;
  send_timeout 10m;

  connection_pool_size 256;
  client_header_buffer_size 1k;
  large_client_header_buffers 4 2k;
  request_pool_size 4k;

  gzip on;
  gzip_min_length 1100;
  gzip_buffers 4 8k;
  gzip_types text/plain;

  output_buffers 1 32k;
  postpone_output 1460;

  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;

  keepalive_timeout 75 20;

  ignore_invalid_headers on;
  index index.html;

  upstream django {
    server 127.0.0.1:8000;
  }

  server {
    listen 80;
    # ここ localhost だと色々まずい
    server_name localhost;

    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov) {
      access_log off;
      expires 30d;
    }

    location /site_media/ {
      alias html/site_media;
    }

    location /media/ {
      alias html/media;
    }

    location / {
      proxy_pass http://django;
      proxy_redirect default;
    }

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

    access_log logs/localhost.access_log main;
    error_log logs/localhost.error_log;
  }
}

これで、Reverse Proxy のできあがり。