> ### ***安装***
yum install pcre pcre-devel
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.6.3.tar.gz
tar zxvf nginx-1.6.3.tar.gz
cd nginx-1.6.3
./configure --prefix=/usr/local/nginx
make
make install
> 注意:由于nginx要在rewrite时要解析正则表达式,PCRE是正则解析库
>### **nginx管理**
```
systemctl start nginx.service #启动nginx
systemctl stop nginx.service #结束nginx
systemctl restart nginx.service #重启nginx
```
> ### ***nginx目录***
```
cd /usr/local/nginx
---conf #配置文件
---html #网页文件
---logs #日志文件
---sbin #主要二进制程序
```
>### ***配置pathinfo格式访问***
```
location ~ \.php(.*)$ {
root html;
fastgi_pass 127.0.0.1:9000;
fastcgi_index index.php
fastcgi_param SCRIPT_FILENAME $DOCUMENT_ROOT$fastcgi_script_name;
fastcgi_param PATH_INFO $1;
}
```
>### ***隐藏入口文件index.php***
```
Sever {
listen 80;
server_name 域名;
access_log logs/域名.log main;
location / {
root html/网站目录;
index index.php index.html;
if ( !-e $request_filename) {
rewrite (.*) /index.php/$1;
}
}
}
```
>### ***利用try_fieles隐藏入口文件index.php***
```
Sever {
listen 80;
server_name 域名;
access_log logs/域名.log main;
location / {
root html/网站目录;
index index.php index.html;
try_files $uri /index.php?$rui
}
}
```
> ### **反射代理**
用nginx做反向代理用proxy_pass
以反向代理为例,nginx不自己处理图片的相关请求,而是把图片请求转发给apache来处理.
执行流程:客户端->nginx->proxy_pass->apache(再原路返回)
具体配置:
```
location ~ \.(jpg|jpeg|png|gif)$ {
proxy_pass HTTP://IP:port;
}
```
反向代理容易把用户真正的IP丢失,而是获得的是代理服务器的IP,要想获得真正用户的IP,需要在代理服务器通过设置头信息字段,把用户IP传到后台服务器.
配置如下:
```
location ~ \.(jpg|jpeg|png|gif)$ {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://ip:port;
}
```
再到apache的日志格式里加上**X-Forwarded-For**,如下:
```
LogFormat "%{X-Forwarded-For}i %1 %u %t \"$r\" %>s %b" common
```
> ### ***负载均衡***
在nginx中做集群与负载均衡步骤都是一样的,Upstream{}模块 把多台服务器加入到一个组中.
然后memcached_pass, fastcgi_pass, proxy_press ====>组
具体配置
1配置upstream(上游)
```
upstream imageserver {
server 192.168.1.205:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.206:8081 weight=1 max_fails=2 fail_timeout=30s;
}
```
2下游调用
```
location ~ \.(jpg|jpeg|png|gif)$ {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://imageserver;
}
```
默认的负载均衡算法:
是设置计数器,轮流请求N台服务器.
可以安装第3方模块,来利用不同参数把请求均衡到不同服务器去.
如基于cookie值区别用户做负载均衡(nginx sticky模块).
或基于URI利用一致性哈希算法做均衡(NginxHttpUpstreamConsistenHash模块).
或基于IP做负载均衡等.
nginx配置网站域名,需要在本地的hosts文件将对应的域名添加进去,例如:
192.168.1.101 www.demo.io