nginx环境配置遇到不少坑,总结一下。
1.关于内外网
server结构下需要配置listen和server_name,如果需要外网访问,server_name配置成域名即可,listen直接配置端口号。如此,通过域名:端口号,或者内网IP:端口号在相应网段下都可以访问。
2.关于重定向
重定向使用location配置。通常至少需要配置 / 路径,设置root(代码)目录,指定index。如果需要配置子路径,在主路径下继续编写即可。如
location /cepm/ {
proxy_pass http://192.168.18.100:3090/cepm/
}
proxy_pass表示代理,代理的url可以直接跟在proxy_pass后面。
如果proxy_read_timeout值设置比较小,如1ms,访问会出现问题,尽量设置大一点。
3.关于405
nginx不支持html静态页面实现post请求,此时nginx会返回405错误。有一种方案是把post请求转换为get请求。
error_page 405 = 200 @405;
location @405
{
root www;
proxy_method GET;
proxy_pass http://static_backend;
}
这里使用的代理方式是通过类似变量名的方式。下面会有介绍。
4.关于负载均衡
在location中使用变量名的方式的代理定义如下:
upstream static_backend {
ip_hash;
server 192.168.18:201:3080;
server 192.168.18:200:3080;
server 192.168.18.199:3080 down;
server 192.168.18.199:3070 max_fails=3 fail_timeout=20s;
}
可以通过多种方式实现负载均衡。
1.weight
server 192.168.18.200 weight=10;
weight越大,负载权重越大。
2.ip_hash
每个请求按访问ip的hash结果分配,这样来自同一个IP的访客访问固定的后端服务器,可以解决session的问题。
3.第三方工具
如fair,url_hash等,需要自行安装。
配置upstream时有几个状态需要解释一下:
1.down 表示当前的server暂时不参与负载。
2.max_fails 允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
3.fail_timeout max_fails次失败后,暂停的时间。
4.backup 其它所有的非backup机器down或者忙的时候,请求backup机器。因此这台机器压力会最轻。
ip_hash不能和backup、weight共存。
5.常用命令
nginx -s reload|reopen|stop|quit #重新加载配置文件|重启|停止|退出 nginx
nginx -t #测试配置文件是否有语法错误
记得配置的时候需要清除浏览器缓存,你懂得。
centos6.5搭建nginx环境