1.简介
nginx由俄罗斯的程序员开发BSD协议下发型,是一个轻量级的web服务器/反向代理服务器及电子邮件代理服务器
GPL开源协议,可修改必须开源
BSD开源协议,可商用
2.编译安装
安装准备:nginx依赖于prce库,要先安装
#yum install pcre pcre-devel
#cd /usr/local/src/
#wget http://nginx.org/download/nginx-1.4.2.tar.gz
#tar zxvf nginx-1.4.2.tar.gz
#cd nginx-1.4.2
#./configure --prefix=/usr/local/nginx
#make && install
删掉进程:pkill -9 nginx
查看进程:ps aux|grep nginx
启动nginx:nginx/sbin/nginx
3.控制命令
nginx -t
-----测试配置是否正确
nginx -s reload
-----加载最新配置
nginx -s stop
-----作用立即停止
nginx -s quit
-----优雅停止
nginx -s reopen
-----重新打开日志
-----mv access.log access_bak.log
-----新建access.log 访问日志文件
-----./sbin/nginx -s reopen 才可以将日志写入新access.log
4.全局段配置
worker_processes 工作进程(设置原则:CPU数量*核数)
events 事件
http{server} (每一个server就是一个虚拟主机)
5.server段配置虚拟主机
5.1)nging.conf配置虚拟主机:
server{
listen 80; #监听80端口
server_name dddai.com; #监听域名,如有多个,空格隔开
location /{
root html/ddd; #根目录定位
index index.php index.html; #默认索引页
}
location ~ .php${
root html/ddd;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
include fastcgi_params;
}
}
5.2)重启./nginx -s reload
5.3)本地访问:
添加hosts:192.168.2.251 ddd.com
浏览器访问:ddd.com
6.日志管理
6.1)自定义日志格式simple
log_format simpile '$remote_addr "$request"';
6.1)设置
server{
access_log logs/dddai.log simple;
}
7.Nginx反向代理并在日志中获取用户IP
7.1)
cd /usr/local/nginx/html/
wget 图片地址
7.2)配置图片反向代理:
location ~ .(jpep|jpg|png|gif)${ #~正则表达式
proxy_pass http://192.168.2.42:80;
}
7.3)代理服务器通过设置头信息字段,把用户IP传到后台服务器去
location ~ .(jpep|jpg|png|gif)${
proxy_pass http://192.168.2.42:80;
proxy_set_header X-Forwarded-For $remote_addr; #$remote_add用户地址
proxy_pass IP:port;
}
8.Nginx集群与负载均衡
反向代理+负载均衡
在nginx中做集群与负载均衡,步骤都是一样的Upstream{}模块,把多台服务器加入到一个组
然后memcached_pass,fastcgi_pass,proxy_pass ==> upstream 组
具体配置步骤:
8.1)配置upstream
upstream imageserver{ #声明服务器组名为imageserver
server 192.168.1.204:8080 weight=1 max_fails=2 fail_timeout=30s; #weight权重,max_fails联系30秒失败2次则不再访问
server 192.168.1.204:8081 weight=1 max_fails=2 fail_timeout=30s;
}
8.2)下游调用
location ~ .(jpg|jpeg|png|gif)$ {
proxy_set_header X-Forwarded-For $remote_addr:
proxy_pass http://imageserver; #转交到imageserver
}
默认的负载均衡的算法:
设置计数器轮流请求N台服务器
可以安装第三方模式,来利用不同参数把请求均衡到不同服务器去
如基于cookie值区别用户做负载均衡(nginx sticky 模块)
或基于URI利用一致性哈希算法均衡(NginxHttpUpstreamConsistentHash模块)
或基于IP做负载均衡等