特性:
·模块化设计
·nginx热部署(不需要中断正在处理的请求,更新配置)
·3xx-5xx错误重定向
·重写(rewrite)模块
·根据浏览器的类型返回哪个页面(比如手机、平板)
·支持验证Referer验证(防盗链)
·支持FLV流和MP4流(下载视频的过程中能一边一下载一边播放)
优点:
·支持kqueuq、epoll等IO模型(异步IO),由此来支持高并发
·内存消耗小
应用场合:
·nginx结合FastCGI运行PHP.JSP,Perl等程序
·nginx作反向代理(http、mail)
·nginx运行静态HTML页面
为什么nginx处理静态小文件能力强并发高?
答:使用epoll和kqueue I/O模型
静态业务:nginx
动态业务:apache
nginx工作模式:一个master后台N个worker(1个主进程多个worker进程)
安装Nginx:
1.安装pcre库:
·pcre是什么:perl兼容正表达式
·为什么安装pcre:使nginx支持HTTP rewrite模块
tar zxvf pcre-8.37.tar cd pcre-8.37 ./configure make && make install
2.nginx参数
/usr/local/nginx/sbin/nginx -t 测试
/usr/local/nginx/sbin/nginx -s reload 平滑重启
/usr/local/nginx/sbin/nginx -V 查看怎么编译的
3.nginx路径
·配置文件路径:/uer/local/nginx/conf/nginx.conf ·启动文件路径:/uer/local/nginx/sbin/nginx ·网页文件路径:/uer/local/nginx/html
4.安装nginx
·关闭防火墙: service iptables stop
·关闭SElinux: setenforce 0
·添加nginx账户: useradd nginx -s /sbin/nologin -M
· tar zxvf nginx-1.8.0.tar.gz
· cd nginx-1.8.0
· ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module
· make && make install
·执行/usr/local/nginx/sbin/nginx -t 报错:error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
·解决:1.find / -name libpcre.so* 找到libpcre.so*的路径 在/usr/local/lib 下
2.vim /etc/lb.so.conf 把/usr/local/lib添加进去
3.ldconfig重新加载,OK
·启动nginx:/usr/local/nginx/sbin/nginx
5.nginx主配置文件详解
·去掉注释: egrep -v "#|^$" nginx.conf #user nobody; #使用哪个账户 worker_processes 1; #启动的worker线程数 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; #启动一个worker线程为1024 } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { listen 80; #监听端口 server_name localhost; #域名地址 #charset koi8-r; #access_log logs/host.access.log main; location / { #uri,“/”表示默认路径/nginx/html下的页面 root html; #网站路径 index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; #50x错误时,跳转到50x.html location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { #以php结尾的访问,由它分配 # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} ·zhaijunming.blog.51cto.com/5449012/1686898 URL:zhaijunming.blog.51cto.com URI:/5449012/1686898 location [= | ~ | ~* | ^~ ] uri {} location = uri {} 精确匹配 location ~ uri {} 区分大小写 location ~* uri {} 不区分大小写 location ^~ uri {} 不实使用正则表达式
6.把主配置文件和虚拟主机配置文件分离
·主配置文件(全局)nginx.conf worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; } include extra/nginx_vhosts.conf; #定义虚拟主机配置文件,/usr/local/nginx/conf/extra/nginx_vhosts.conf ·创建虚拟主机文件:mkdir -p /usr/local/nginx/conf/extra touch /usr/local/nginx/conf/extra/nginx_vhosts.conf ·虚拟主机配置文件 vim /usr/local/nginx/conf/extra/nginx_vhosts.conf server { listen 80; server_name location / { root /data/www/www; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server{ listen 80; server_name blog.aaa.com; location / { root /data/www/blog; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
7.定义日志
·将这段加入到nginx.conf中的http {}中,表示为所有虚拟主机使用这种格式的日志
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /usr/local/nginx/logs/access.log main;
·第一行main为定义的日志格式,最后一行main调用上面main的格式。
·也可以将最后一行加入到nginx_vhots.conf中的server{}中,表示为某个虚拟主机使用此格式