Nginx功能简述
反向代理:简单来说就是代理多台服务器,客户端在访问的时候并不知道自己实际上是访问的是哪个服务器,具体的请求由nginx来进行服务器的分发
负载均衡:Nginx提供的负载均衡策略有5种:
- 轮询(默认):每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
- 指定权重:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况
- IP绑定 ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
- fair(第三方):按后端服务器的响应时间来分配请求,响应时间短的优先分配。
- url_hash(第三方):按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
nginx的文件结构
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
关于各个块的详解:
- 全局快:用于配置会影响全局的配置,如:日志文件的存放位置
- events块:配置影响nginx服务器或者用户组的网络连接。如:每个进程的最大连接数,是否允许接受多个连接
- http块:可以嵌套多个server,配置代理,缓存,日志等第三方模块
- server块:配置虚拟主机的相关参数
- locatation块:配置请求的路由,以及各种页面的处理情况,可以使用正则,也可以使用具体的页面
最后是一套完整的nginx的配置,搭建仅供参考
server {
listen 80; #监听端口
listen 9601;
server_name neusoft.edu.cn;#服务名称
server_tokens off; #隐藏端口号
root /home/q/system/sens/src/www/admin; #指定这个目录作为文件的检索
if ($request_filename !~ \.(js|swf|ico|gif|jpg|png|php|css|xml|html|eot|svg|ttf|woff|woff2)$) {
rewrite ^ /index.php; #rewrite是地址重定向
}
try_files $uri $uri/ =404; #如果找不到文件,就直接在uri的下面找,如果在找不到,就报404
index index.php;
gzip on;
gzip_comp_level 6;
gzip_min_length 500;
charset utf-8; #编码集
access_log /usr/local/nginx/logs/sens_admin.log main; #成功的log
error_log /usr/local/nginx/logs/sens_admin_error.log; #失败的log
location = /index.php { #根据用户的请求来进行配置段的执行,这里如果请求的是index.php,那么执行配置
#fastcgi_pass unix:/tmp/fcgi.sock;
fastcgi_pass 127.0.0.1:9000; #fastcgi(http服务器与你的或其它机器上的程序进行“交谈”的一种工具)监听的端口
fastcgi_index index.php; # 接下来就是fastcgi的一些配置,有兴趣的话可以自己去查询一下
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
fastcgi_param PROJECT_INCLUDE_PATH "/home/q/php:/home/q/system/sens/config/admin/:.";
client_max_body_size 1m;
include fastcgi.conf;
fastcgi_connect_timeout 50s;
fastcgi_send_timeout 50s;
fastcgi_read_timeout 50s;
}
}