附录:
简介 Nginx做为一款高性能的HTTP反向代理服务器,有极高的执行效率、简单灵活的配置。
Nginx使用epoll和kqueue网络的I/O模型,而apache使用的是传统的select模型。
与tomcat的区别:
tomcat是根据Servlet和JSP规范执行的。
tomcat对静态文件、高并发文件的处理比较弱。
Nginx优势:
配置文件简单
支持Rewrite重写规则。能根据域名、URL的不同将HTTP请求分发到不同的后端服务器集群
负载均衡(为集群提供服务分发能力)
反向代理
内置健康检查。如果后端的某台应用服务器挂了,不会影响前端访问
节省带宽。支持GZIP压缩。(具体应用服务器上层会挂一台web服务器,做一些压缩处理)
支持热部署
Nginx、Apache、Lighttpd的对比:
Nginx的主配置文件为nginx.conf,下面是Web Server的完整配置示例。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 user www-data; worker_processes 1; error_log /var/log /nginx/error.log; pid /var/run/nginx.pid; events { use epoll; worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log /nginx/access.log; sendfile on; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)" ; client_header_buffer_size 1k; large_client_header_buffers 4 4k; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; upstream mysvr { server 192.168.8.1:3128 weight=5; server 192.168.8.2:80 weight=1; server 192.168.8.3:80 weight=6; } server { listen 80; server_name www.xx.com; access_log logs/www.xx.com.access.log main; location / { root /root; index index.php index.html index.htm; fastcgi_pass www.xx.com; fastcgi_param SCRIPT_FILENAME $document_root /$fastcgi_script_name ; include /etc/nginx/fastcgi_params; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /root; } location ~ ^/(images|javascript|js|css|flash|media|static)/ { root /var/www/virtual/htdocs; expires 30d; } location ~ \.php$ { root /root; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name ; include fastcgi_params; } location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus" ; auth_basic_user_file conf/htpasswd; } location ~ /\.ht { deny all; } } }
如果要使用负载均衡的话,可以修改配置http节点如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log /nginx/access.log; upstream mysvr { server 192.168.8.1x:3128 weight=5; server 192.168.8.2x:80 weight=1; server 192.168.8.3x:80 weight=6; } upstream mysvr2 { server 192.168.8.x:80 weight=1; server 192.168.8.x:80 weight=6; } server { listen 80; server_name 192.168.8.x; location ~ .*\.aspx$ { root /root; index index.php index.html index.htm; proxy_pass http://mysvr ; proxy_redirect off; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } } }
虚拟主机 利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程。虚拟主机提供了在同一台服务器、同一组nginx进程上运行多个网站的功能。
gzip(GNU—ZIP)是一种压缩技术,可以将页面大小压缩到原来的30%或更小。
Nginx的浏览器本地缓存设置。当用户再次请求这个页面时,浏览器可以从本地磁盘显示文件,节约了网络的资源,提高了网络的效率。
对图片文件缓存30天,对js、css文件缓存1小时。
FastCGI的工作原理是:
FastCGI进程管理器自身初始化,启动多个CGI解释器进程 (在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。启动php-cgi FastCGI进程时,可以配置以TCP和UNIX套接字(socket)两种方式启动。
当客户端请求到达Web Server(Nginx)时,Web Server(Nginx)将请求采用TCP协议或socket方式转发到FastCGI主进程,FastCGI主进程选择并连接到一个CGI解释器(子进程php-cgi.exe)。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi.exe。
FastCGI子进程php-cgi.ex完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在 WebServer中)的下一个连接。 而在CGI中,php-cgi子进程在此便被退出了。
Nginx与Tomcat的配置:
反向代理: 代理服务器接受来自Internet的连接请求,然后将请求转发给内部网络上的服务器,并从服务器上得到的结果返回给Internet上请求连接的客户端。
反向代理服务器只是一层代理,所以受到攻击并不会使网页信息遭到破坏,增强了web服务器的安全性。
参考资料: https://www.zybuluo.com/happyfans/note/161734
《实战Nginx 取代Apache的高性能Web服务器》