nginx学习笔记
一、什么是nginx?
1、使用 Nginx 结合FastCGI运行 PHP、JSP 、Perl等程序
2、使用 Nginx 作反向代理、负载均衡、规则过滤
3、使用 Nginx 运行静态HTML页、图片
4、Nginx与其他新技术的结合应用
四、简单的负载均衡配置
……
upstream bbs_server_pool {
server 192.168.1.15:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.16:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.17:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.18:80 weight=1 max_fails=2 fail_timeout=30s;
}
……
在nginx.conf配置文件中,用upstream指令定义一组反向代理/负载均衡后端服务器池。
……
server{
listen 80;
server_name bbs.yourdomain.com *.bbs.yourdomain.com;
location /
{
proxy_pass http://bbs_server_pool;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
}
access_log off;
}
……
proxy_pass http://bbs_server_pool; 用于指定反向代理的服务器池。
proxy_set_header Host $host; 当后端Web服务器上也配置有多个虚拟主机时,需要用该Header来区分反向代理哪个主机名。
proxy_set_header X-Forwarded-For $remote_addr; 如果后端Web服务器上的程序需要获取用户IP,请从该Header头获取。
五、nginx缓存
•Nginx从0.7.48版本开始,支持了类似Squid的缓存功能;
•缓存把URL及相关组合当作Key,用md5编码哈希后保存;
•Nginx的Web缓存服务只能为指定URL或状态码设置过期时间,不支持类似Squid的PURGE指令,手动清除指定缓存页面;
•采用MMAP实现,设置的缓存区大小不能超过物理内存+SWAP的值。
……
#设置Web缓存区名称为cache_one,缓存空间大小为2000MB,1天清理一次缓存,单个文件超过5m不缓存。
proxy_cache_path /data0/proxy_cache_path levels=1:2 keys_zone=cache_one:2000m inactive=1d max_size=5m;
#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
proxy_temp_path /data0/proxy_temp_path;
upstream my_server_pool {
server 192.168.1.2:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.3:80 weight=1 max_fails=2 fail_timeout=30s;
}
……
server
{
listen 80;
server_name my.domain.com;
location /
{
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://my_server_pool;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$
{
#对图片、JS、CSS进行缓存,使用Web缓存区cache_one
proxy_cache cache_one;
#对不同HTTP状态码缓存设置不同的缓存时间
proxy_cache_valid 200 10m;
proxy_cache_valid 304 3m;
proxy_cache_valid 301 302 1h;
proxy_cache_valid any 1m;
#设置Web缓存的Key值,Nginx根据Key值md5哈希存储缓存,这里根据“域名、URI、客户端请求Header头中的If-Modified-Since信息”组合成Key。
proxy_cache_key $host$request_uri$http_if_modified_since;
#反向代理,访问后端内容源服务器
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://my_server_pool;
}
access_log off;
}
优点:•对于修改实时性要求不高的图片、Flash、CSS样式文件、JavaScript文件,可以在Nginx反向代理(负载均衡)服务器上设置缓存,不用每次请求都转发到后端Web服务器,
加快了响应速度。
•减少了Nginx与后端Web服务器的连接数,提高了Nginx处理性能。