IO分為記憶體IO,網路IO,磁碟IO IO模型: 同步IO模型: 同步阻塞:一個進程對應一個IO,進程在運行時,不能去乾別的,一直等待 同步非阻塞:一個進程對應一個IO,進程運行時,可以去做別的事,等待別的程式的數 據傳輸,進程會定時詢問是否準備完成 多路訪問的IO模型--IO復用(select p... ...
IO分為記憶體IO,網路IO,磁碟IO IO模型: 同步IO模型: 同步阻塞:一個進程對應一個IO,進程在運行時,不能去乾別的,一直等待 同步非阻塞:一個進程對應一個IO,進程運行時,可以去做別的事,等待別的程式的數 據傳輸,進程會定時詢問是否準備完成 多路訪問的IO模型--IO復用(select poll epoll) 多線程運行 這種情況適合大併發請求的情況, 非同步IO模型: *非同步10* 進程只需要發起請求,內核准備數據,當數據準備就緒以後,會主動通知進程; apache採用的select就是同步IO模型,而nginx採用的就是 epoll的非同步模型;所以,從這點上說,nginx要遠遠由於apache; nginx適用環境:小文件的高併發傳輸 nginx - engine X (Tengin:屬於淘寶公司對nginx的=次開發優化版本,更好的支持高併發,與web安全功能); 由俄羅斯I君開發的,2004年開發的,I君為elusive第二大網站開發的一個前端靜態資源解析程式 安裝nginx 安裝nginx: ./configure --prefix=/usr/local/nginx --conf-path=(配置文件一定要放到程式目錄下,不要放到etc目錄下麵去)/etc/nginx/nginx.conf --user=nginx --group=nginx --error-log-path=/var/log/nginx/error.log // /var/log/httpd/access_log error_log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/log/nginx.log --with-http_ssl_module *--with-http_stub_status_module* --with-http_gzip_static_module --with-http_flv_module --with-http_mp4_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/var/tmp/nginx/proxy --http-fastcgi-temp-path=/var/tmp/nginx/fstacgi --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi nginx.conf文件解讀 #user nobody; ##指定Nginx Worker進程運行的用戶及用戶組 worker_processes 2; ##指定了Nginx要開啟的進程數 #error_log logs/error.log; ##定義全局錯誤日誌文件 #error_log logs/error.log notice;##notice、info是輸出級別 #error_log logs/error.log info; #pid logs/nginx.pid; ##設定工作模式及連接數上限 events { worker_connections 1024; } http { include mime.types; ##實現對配置文件所包含的的文件的設定,可以減少主配置文件的複雜度。 default_type application/octet-stream; ##設定預設類型為二進位流, ##指定Nginx日誌的輸出格式。 #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;##設置開啟和關閉gzip模塊 server { ##虛擬主機配置 listen 80;##指定虛擬主機的服務埠 server_name www.whr.com; ##指定ip地址及功能變數名稱 #charset koi8-r;##預設字元集 #access_log logs/host.access.log main;##指定虛擬主機的訪問日誌存放路徑,main用於 指定訪問日誌的輸出格式 location / { root html/zero_47_zVintauge; ##返回根路徑地址(相對路徑:相對於/usr/local/nginx/) index index.html index.htm; ##預設訪問文件 #autoindex on; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html #錯誤頁面極其返回地址 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 #配置反向代理tomcat伺服器;攔截.jsp結尾的請求轉向到tomcat #location ~ \.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; # } #} } 設置多主機名的nginx 在http下添加一個新的server,設定新的主機名 server { listen 80; #listen somename:8080; server_name www.welcome.com; location / { root html; index index.html index.htm; } } server { listen 80; #listen somename:8080; server_name www.whr.com; location / { root html/zero_47_zVintauge; index index.html index.htm; } } 然後再主機上配置hosts文件: 10.6.29.144 www.whr