wheezy.web is a lightweight, high performance, high concurrency WSGI web framework with the key features to build modern, efficient web. Here we will deploy quick start with nginx, uwsgi and memcached to clean debian stable installation.
Showing posts with label nginx. Show all posts
Showing posts with label nginx. Show all posts
Monday, August 4, 2014
Monday, November 28, 2011
How to rewrite all to https in nginx
Here we are going redirect all http traffic to https with nginx. I suppose you already have nginx installed, if not have a look here. We will store SSL certificates in /etc/nginx/ssl directory.
cd /etc/nginx
mkdir ssl
openssl req -new -x509 -sha256 -days 9999 -nodes \
-out ssl/cert.pem -keyout ssl/cert.key
chown -R www-data:www-data ssl
chmod -R 700 ssl
Here is nginx configuration:
upstream backend {
server 127.0.0.1:8080;
}
server {
listen *:80;
return 301 https://$host$request_uri;
#if ( $scheme = "http" ) {
# rewrite ^/(.*)$ https://$host/$1 permanent;
#}
}
server {
listen *:443;
ssl on;
ssl_protocols TLSv1;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.key;
location / {
proxy_pass http://backend;
}
}
You have to reload nginx so the changes take place.
Tuesday, August 16, 2011
How to Install django on Debian using nginx uwsgi
Here we are going install a basic django application using uwsgi application server and nginx as load balancer. Requirements:
- django code location: /usr/local/lib
- django project: hello
apt-get -y install nginx uwsgi \
uwsgi-plugin-python python-django
Create a simple django application:
cd /usr/local/lib django-admin startproject hello
uWSGI
Create uWSGI configuration (file /etc/uwsgi/apps-available/hello.yaml):
uwsgi:
uid: www-data
gid: www-data
socket: /tmp/uwsgi-hello.sock
plugins: http, python
module: django.core.handlers.wsgi:WSGIHandler()
pythonpath: /usr/local/lib
chdir: /usr/local/lib/hello
env: DJANGO_SETTINGS_MODULE=hello.settings
Enable this configuration and restart uwsgi server:
ln -s /etc/uwsgi/apps-available/hello.yaml \
/etc/uwsgi/apps-enabled/hello.yaml
/etc/init.d/uwsgi restart
nginx
Create nginx site configuration (file /etc/nginx/sites-available/hello):
upstream backend {
server unix:///tmp/uwsgi-hello.sock;
}
server {
location / {
uwsgi_pass backend;
include uwsgi_params;
}
location /static/admin/ {
alias /usr/lib/pymodules/python2.6/django/contrib/admin/media/;
access_log off;
expires 7d;
}
location /static/ {
alias /usr/local/lib/hello/static/;
access_log off;
expires 7d;
}
}
Remove default site, enable this configuration and restart nginx server:
rm /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/hello \
/etc/nginx/sites-enabled/hello
/etc/init.d/nginx restart
nginx - uwsgi_cache
Web sites that serve almost static content (updated let say every 15 mins) can benefit by utilizing content caching:
...
uwsgi_cache_path /var/cache/hello levels=1:2
keys_zone=NAME:15m
inactive=5m;
server {
location / {
uwsgi_pass backend;
include uwsgi_params;
uwsgi_cache NAME;
uwsgi_cache_valid 200 302 15m;
uwsgi_cache_key $request_uri;
expires 15m;
}
...
}
If you experience performance issue with content rendering, overhead of framework internal time, have a willing to fine control content caching consider take a look at the following post and this one.
Simple Load Balancing with nginx on Debian
Suppose you need distribute http workload across multiple computers/processes. Here we will be using nginx to implement load balancing (using round-robin scheduling). Let start by installing nginx package:
apt-get -y install nginxPlace the following into /etc/nginx/sites-available/my-site:
upstream backend {
// every 7 requests: 5 requests to s1 server
// and one request to the second and the third
server s1 weight=5;
// after 3 unsuccessful attempts within
// the 30 seconds s2 is considered
// inoperative
server unix:/tmp/s2 max_fails=3 fail_timeout=30s;
server 127.0.0.1:8080;
}
server {
location / {
proxy_pass http://backend;
}
}
Now disable default site configuration, enable a new one and restart nginx:
rm /etc/nginx/sites-enabled/default
ln -s /etc/nginx/sites-available/my-site \
/etc/nginx/sites-enabled/my-site
/etc/init.d/nginx restart
Read more about nginx upstream module here.
Subscribe to:
Posts
(
Atom
)