Nginx详解
一、Nginx介绍
nginx:开源的,高性能的。高并发的www服务器和代理服务
对静态资源处理能力强,占用资源极少,
高并发状态下容易造成崩溃
同类型web服务:apache、tomacat、resin、weblogic
反向代理:lvs、haproxy
前端缓存:squid、vanish
二、Nginx重要特性
①支持高并发 ②资源消耗少
三、Nginx三大功能
①web服务 ②前端缓存 ③反向代理
Nginx使用的是epoll模型
Apache使用的是select模型(初始模型,性能差)
Apache在处理动态资源的时候比Nginx强
什么是epoll:异步I/O网络非阻塞模型
什么是select:同步I/O网络阻塞模型
四、Nginx安装
安装Nginx的支持包:pcre-devel openssl-devel
解压nginx包到/usr/local
进入nginx解压后的包进行编译:
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module && make && make install
做软连接或环境变量==>echo "PATH=$PATH:/usr/local/nginx/sbin" >> /etc/profile
五、Nginx的使用
——打开nginx配置文件:vim /usr/local/nginx/conf/nginx.conf
将没用的清空,去#注释内容留如下图所示:
work_processes==>工作的进程数,跟cpu核数相对应
worker_connections 1024;==>进程里的线程数,默认1024,工作中写成20倍—20480
http下面的大函数里面跟wed服务器有关
include mime.types;==>导入函数mime装的所有函数,相对路径
sendfile on;==>默认开启nginx文件的高效传输功能
keepalive_timeout 65;==>默认开启连接保持65秒(连接保持状态可以免tcp三次握手,提高效率)
server 函数:代表一个网站
listen 80;==>默认监听socket端口;http默认80端口
server_name localhost;==>server_name做域名
location / ==>搜索网址时,后面会有/符号
root html;==>默认网页根目录路径开始
index index.html index.htm;==>首页
include 相对路径==>可以在另一个文件写配置文件然后导入
location五个优先级
location / —>默认匹配
location =/ —>精确匹配
location =/images/ —>精确匹配,后面什么都不能有
location /documents/ —>前缀型字符串匹配,必须从根开始,后面任意
location ^~ —>前缀型正则匹配,特殊正则,必须以正则开头
location ~*.(gif|jpg|jpeg)$ —>正则匹配,不需要从头开始,只要含有以.gif|.jpg|.jpeg结尾就行
———>精确匹配>特殊正则(^~)>普通正则(~*)>字符串前缀匹配(/images/)>默认匹配
启动Nginx服务==>/usr/local/nginx/sbin/nginx
检验Nginx配置文件是否正确==>/usr/local/nginx/sbin/nginx -t
重启Nginx服务==>/usr/local/nginx/sbin/nginx -s reload(每次修改配置文件都需重启服务)
六、Nginx rewrite(重写)
写法:rewrite regex(正则) replacement(匹配到的内容进行重写) 【flag】(结尾);
例:rewrite ^/(.*) http://www.baidu.com/$1 permanent;
flag四种标记:last-本条规则匹配完成之后,继续向下匹配新的location URI规则
break-本条规则匹配完成即终止,不再匹配后面任何规则
redirect-返回302临时重定向
permanent-返回301永久重定向
———————————————————————
if ( $http_host ~* "^(.*)\.yunjisuan\.com$" ) {
set $domain $1;==>set赋值,将$1赋值给$domain
rewrite ^(.*) http://www.yunjisuan.com/$domain break;
}
if语句:如果if匹配到一任意开头.yunjisuan以 .com结尾,则使用rewrite转化成www.yunjisuan.com/
如下图所示:
将benet1.yunjisuan.com跳转到www.yunjisuan.com/benet1/index.html
七、Nginx访问认证(可以设密码)
需要htpasswd,如果没有需要装http:
yum -y install httpd
生成密码:
htpasswd -bc /usr/local/nginx/conf/htpasswd yunjisuan 123123
查看一下密码文件:
cat /usr/local/nginx/conf/htpasswd==>是加密的密码
在虚拟主机里加配置==>vim /usr/local/nginx/conf/nginx.conf
location里index index.html index.htm下添加
auth_basic "welcome to my home";==>标题随便写
auth_basic_user_file /usr/local/nginx/conf/htpasswd;==>密码文件路径
如下图所示:
——————配置完成
登录www.yunjisuan.com时会出现认证:
八、Nginx日志切割脚本
来源:oschina
链接:https://my.oschina.net/u/4400094/blog/4076380