なかなかよく分かっていなかったnginx.confの書き方。
現在はこんな感じになっている。
=== 以下、設定サンプル ===
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
client_max_body_size 1024m;
default_type application/octet-stream;
sendfile off;
keepalive_timeout 65;
index index.html index.htm;
server {
listen 80;
server_name localhost;
proxy_read_timeout 10m;
autoindex on;
location = /favicon.ico {
log_not_found off;
}
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
root /var/www/static/;
access_log off;
expires 30d;
}
location / {
proxy_pass http://localhost:53000; # tornado(アプリ)が53000でListenしている前提
break;
}
location /echo {
alias /var/www/apps/echo;
proxy_pass http://localhost:53001; # tornado(アプリ)がWebsocketを使っている場合
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
index echo.html;
}
location /chat {
alias /var/www/apps/chat;
proxy_pass http://localhost:53001; # tornado(アプリ)がWebsocketを使っている場合
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
index main.html;
}
location /data/ {
proxy_http_version 1.1;
expires off;
proxy_request_buffering off;
chunked_transfer_encoding on;
root /var/www/data/;
}
}
}
=== ここまで ===
ハマったポイントとしては、
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico)$ {
root /var/www/static/;
以下略
}
と設定してあるので、各アプリケーション絡みのjpgやcssファイルは/www/static/適当なフォルダ/に保存しないと動かないこと。
下の設定は、Websocketを使うアプリケーションのもの。
location /chat {
alias /var/www/apps/chat;
proxy_pass http://localhost:53001;
# tornado(アプリ)がWebsocketを使っている場合
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
index main.html;
}
Webブラウザから http://hogehoge.com/chat と入力するとポート番号53001で待機しているtornadoアプリケーションにフォワードされる。
アプリケーションが動かなくてすごく悩まされたのは、alias設定を書いていなかったため。
そりゃそうだ。
ポート番号53001に来たパケットをフォワードしようにも、どこのアプリケーションにフォワードするのか記述がなければ動くわけないよな。。。。(>_<)
ちなみに上記の設定では、http://hogehoge.com/data/にアクセスすると、/var/www/data/に行く設定になっている。
0 件のコメント:
コメントを投稿