O Nginx pode fazer um pouco, incluindo proxy reverso, cache e conteúdo de serviço, mas em grandes ambientes, funções individuais são divididas para torná-las mais fáceis de manter ou especializadas com alternativas mais adequadas (como o stud para https de alto volume: / /).
Um proxy reverso significa apenas algo que fica entre o cliente e o aplicativo real; Na verdade, é um equívoco e deve ser chamado de "proxy do servidor".
Para veicular tudo, desde um certificado em um domínio, comece com algo assim:
(testado no Ubuntu LTS 12.04)
/ etc / nginx / proxy_params
#proxy_set_header Host $proxy_host; # instead of standard $host
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
/ etc / nginx / sites-enabled / global_redirects
# note: must disable the built-in
# /etc/nginx/sites-enabled/default by removing it (it's a symlink)
server {
# redirects all http:// requests to https://
# critically, passes the original host the client was trying to connect to.
rewrite ^ https://$host$request_uri? permanent;
# combined redirect access and error logs for easier correlation
error_log '/var/log/nginx/global_redirects';
access_log '/var/log/nginx/global_redirects';
}
/ etc / nginx / sites-enabled / global_ssl
# This serves all enabled-locations over ssl only.
# If there's no match, it shows the default site.
include /etc/nginx/upstreams-enabled/*; # include enabled upstream proxies
server {
listen 443 ssl;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;
keepalive_timeout 70;
root /usr/share/nginx/www;
index index.html index.htm;
access_log '/var/log/nginx/global_ssl';
error_log '/var/log/nginx/global_ssl';
include /etc/nginx/locations-enabled/*;
}
/ etc / nginx / locations-enabled / bar
# points to hackernews but
# it could be http://10.2.4.5:401/app495 instead
location ~ ^/bar(/.*)?$ {
include proxy_params;
include apps/node;
proxy_pass http://news.ycombinator.com/$1;
access_log '/var/log/nginx/bar';
error_log '/var/log/nginx/bar';
}
/ etc / nginx / locations-enabled / foo
location ~ ^/foo(/.*)?$ {
include proxy_params;
include apps/ruby;
proxy_pass http://www.linode.com/$1;
access_log '/var/log/nginx/foo';
error_log '/var/log/nginx/foo';
}
/etc/nginx/upstreams-enabled/news.ycombinator.com
upstream news.ycombinator.com {
server news.ycombinator.com;
}
/etc/nginx/upstreams-enabled/www.linode.com
upstream www.linode.com {
server www.linode.com;
}
/ etc / nginx / apps / ruby
# Place ruby specific directives here
/ etc / nginx / apps / node
# Place node specific directives here
Lembre-se de que isso não reescreve URLs nas páginas, porque elas são geradas por cada aplicativo. Em vez disso, cada aplicativo deve conhecer seu esquema externo, host, porta e base de URL e produzir links de maneira adequada (a maioria dos aplicativos reais oferece suporte a isso).
Referências: