摘要:使用雙處理器的系統使用可能會造成內核崩潰高效方法,使用于內核版本及以后的系統,內核要打補丁可執行的實時信號,不常見使用于,,和使用于,為了防止出現內核崩潰的問題,有必要安裝這個安全補丁。
nginx的優點[摘自互聯網]
1. 處理靜態文件、索引文件以及自動索引;打開文件描述符緩沖。 2. 無緩存的反向代理加速,簡單的負載均衡和容錯。 3. FastCGI:簡單的負載均衡和容錯。 4. 模塊化的結構:包括 gzipping,byte ranges,chunked responses,以及SSI-filter等filter。如果由FastCGI或其他代理服務器處理單頁中存在的多個SSI,則這項處理可以并行運行,而不需要相互等待。 5. 支持SSL和TLS SNI 6. Nginx?專為性能優化而開發,性能是其最重要的考量,實現上非常注重效率。它支持內核Poll模型,能經受高負載的考驗,有報告表明能支持高達50000個并發連接數。感謝Nginx為我們選擇了epoll and kqueue作為開發模型。 7.?Nginx具有很高的穩定性。其他HTTP服務器,當遇到訪問的峰值,或者有人惡意發起慢速連接時,很可能會導致服務器物理內存耗盡或頻繁交換,失去響應,只能重啟服務器。例如當前apache一旦上到200個以上進程,web響應速度就明顯非常緩慢了。而Nginx采取了分階段資源分配技術,使得它的CPU與內存占用率非常低。Nginx官方表示保持10000個沒有活動的連接,它只占2.5M內存,所以類似DDOS這樣的攻擊對Nginx來說基本上是毫無用處的。就穩定性而言,Nginx比lighthttpd更勝一籌。 8. Nginx支持熱部署。它的啟動特別容易,并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠在不間斷服務的情況下,對軟件版本進行升級。 9. Nginx采用master-slave模型,能夠充分利用SMP的優勢,且能夠減少工作進程在磁盤I/O的阻塞延遲。當采用select()/poll()調用時,還可以限制每個進程的連接數。 10. Nginx代碼質量非常高,代碼很規范,手法成熟,模塊擴展也很容易,特別值得一提的是強大的Upstream與Filter鏈。Upstream為諸如reverse proxy,與其他服務器通信模塊的編寫奠定了很好的基礎。而Filter鏈最酷的部分就是各個filter不必等待前一個filter執行完畢。它可以把前一個filter的輸出作為當前filter的輸入,這有點像Unix的管道。這意味著,一個模塊可以開始壓縮從后端服務器發送過來的請求,且可以在模塊接收完成后端服務器的整個請求之前把壓縮流轉向客戶端。? 11. 作為郵件代理服務器:Nginx同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作為郵件代理服務器),Last.fm描述了成功并且美妙的使用經驗。 11. Nginx采用了一些os提供的最新特性如對sendfile(Linux 2.2+),accept-filter(FreeBSD 4.1+),TCP_DEFER_ACCEPT(Linux 2.4+)的支持,從而大大提高了性能。?事件模型
Nginx支持如下處理連接的方法(I/O復用方法),這些方法可以通過use指令指定。 1. select 標準方法 2. Poll 標準方法 3. Kueue 高效方法。使用FreeBSD 4.1+,OpenBSD 2.9+,NetBSD 2.0 和 MaxOS X。使用雙處理器的MacOS X系統使用kqueue可能會造成內核崩潰 4. Epoll 高效方法,使用于Linux內核2.6版本及以后的系統,2.4內核要打補丁 5. Rtsig 可執行的實時信號,不常見? 6. /dev/poll 使用于 Solaris 7 11/99+,HP/UX 11.22+(eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+ 7. Eventport 使用于Solaris 10,為了防止出現內核崩潰的問題,有必要安裝這個安全補丁。安裝 規劃
a. 主機名:n1.web.org b. IP地址:192.168.128.21 c. 系統:CentOS 6.5 64bit d. 源碼目錄:/usr/local/src e. 安裝目錄:/opt/nginx安裝
a. 所需軟件包 pcre-8.35.tar.gz zlib-1.2.8.tar.gz nginx-1.6.2.tar.gz b. 準備工作 [root@nginx1 ~]# yum -y install gcc gcc-c++ autoconf automake make libtool openssl openssl-devel [root@nginx1 ~]# useradd -M -s /sbin/nologin www c. 安裝pcre [root@nginx1 src]# tar -zxvf pcre-8.35.tar.gz [root@nginx1 src]# cd pcre-8.35 [root@nginx1 pcre-8.35]# ./configure --prefix=/opt/nginx/pcre [root@nginx1 pcre-8.35]# make && make install d. 安裝zlib [root@nginx1 src]# tar -zxvf zlib-1.2.8.tar.gz [root@nginx1 src]# cd zlib-1.2.8 [root@nginx1 zlib-1.2.8]# ./configure --prefix=/opt/nginx/zlib [root@nginx1 zlib-1.2.8]# make && make install e. 安裝nginx [root@nginx1 src]# tar -zxvf nginx-1.6.2.tar.gz [root@nginx1 src]# cd nginx-1.6.2 [root@nginx1 nginx-1.6.2]# more nginx.configure ./configure --user=www --group=www --prefix=/opt/nginx/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_sub_module --with-http_flv_module --with-http_dav_module --with-http_addition_module --with-pcre=/usr/local/src/pcre-8.35 --with-zlib=/usr/local/src/zlib-1.2.8 --with-cc-opt="-O3" --with-cpu-opt=opteron [root@nginx1 nginx-1.6.2]# make && make install f. Nginx編譯優化 ① GCC 參數優化 默認nginx使用的GCC的編譯參數是-O。需要更加優化可以使用以下兩個參數(即上面安裝nginx時.configure的最后兩項) --with-cc-opt="-O3" --with-cpu-opt=opteron 使得編譯針對特定CPU以及增加GCC的優化。此方法僅對性能有所改善(大概增加性能1%左右)并不會有很大的性能提升,僅供參考。? ② 修改Nginx的header偽裝服務器 vi nginx-1.6.2/src/core/nginx.h #ifndef _NGINX_H_INCLUDED_ #define _NGINX_H_INCLUDED_? #define nginx_version ? ? ?1005007 #define NGINX_VERSION ? ? ?"**1.5.7**" #define NGINX_VER ? ? ? ? ?"**nginx**/" NGINX_VERSION #define NGINX_VAR ? ? ? ? ?"NGINX" #define NGX_OLDPID_EXT ? ? ".oldbin" #endif /* _NGINX_H_INCLUDED_ */? 修改加粗標記的文字為自己想要修改的文字即可。如,NGINX_VERSION 修改為5.7,NGINX_VER修改為Milo。 用curl測試:curl -I 192.168.128.21,Server會返回Milo/5.7,而不是原來的Nginx服務器和版本號了。 ③ Tcmalloc優化Nginx性能 從Nginx 0.6.29 添加Feature:the ngx_google_perftools_module 以來,Nginx也可以利用Tcmalloc來提升性能。配置[簡單的初步配置]
[root@nginx1 conf]# more nginx.conf user www www; worker_processes 1; error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid /var/run/nginx.pid; worker_rlimit_nofile 65535; events { use epoll; worker_connections 65535; } 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; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 8m; sendfile on; tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; tcp_nodelay on; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; server { listen 80; server_name web.xsl.com; index index.html index.htm; root /app/web/www; # location / { # 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; # location = /50x.html { # root html; # } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #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; # } #} }啟動腳本
[root@nginx1 conf]# more /etc/init.d/nginx #!/bin/sh # # chkconfig: - 85 15 # processname: nginx # config: /opt/nginx/nginx/conf/nginx.conf # pidfile: /var/run/nginx.pid # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ "$NETWORKING" = "no" ] && exit 0 nginx="/opt/nginx/nginx/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/opt/nginx/nginx/conf/nginx.conf" lockfile=/var/lock/subsys/nginx start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 echo -n $"Starting $prog: " daemon $nginx -c $NGINX_CONF_FILE retval=$? echo [ $retval -eq 0 ] && touch $lockfile return $retval } stop() { echo -n $"Stopping $prog: " killproc $prog -QUIT retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval } restart() { configtest || return $? stop start } reload() { configtest || return $? echo -n $"Reloading $prog: " killproc $nginx -HUP RETVAL=$? echo } force_reload() { restart } configtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { status $prog } rh_status_q() { rh_status > /dev/null 2>&1 } case "$1" in start) rh_status_q && exit 0 $1 ;; stop) rh_status_q || exit 0 $1 ;; restart|configtest) $1 ;; reload) rh_status_q || exit 7 $1 ;; force-reload) force_reload ;; status) rh_status ;; condrestart|try-restart) rh_status_q || exit 0 ;; *) echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}" exit 2 esac
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39185.html
摘要:網上看別人寫的服務器配置,有的是源碼包安裝的,有的時安裝的。通過源碼包編譯安裝的軟件,通常都放在包名路徑下。正則表達式使用在指令和模塊中。 網上看別人寫的 nginx 服務器配置 ,有的是源碼包安裝的,有的時 yum 安裝的。如果是新手,可能會有疑問,這兩種安裝方式有什么區別?我應該使用哪種方式?系統里可以兩個都安裝可以嗎?怎么卸載?等等問題,那么在這里,我做下總結,詳細介紹下這兩種方...
摘要:如果發現運行只有一行回顯,可能是當前端口被占用,使用端口號,默認,如果打印結果為兩行或以上,即端口被占用,需要修改配置文件的端口號再重新運行。 概述 記錄一下 Nginx 通過安裝包以及通過源代碼安裝兩種方式。目標是第一次接觸 Nginx 的人也能看懂直接用。 一. 使用安裝包配置 Tip: 這種安裝方式比較簡單,官方文檔也說得比較清楚詳細。這里搭建的環境是 Centos7, 可以sy...
閱讀 1707·2023-04-26 02:30
閱讀 1033·2021-11-10 11:36
閱讀 1380·2021-10-08 10:14
閱讀 3496·2021-09-28 09:35
閱讀 1552·2021-08-23 09:47
閱讀 2544·2019-08-30 15:56
閱讀 1469·2019-08-30 15:44
閱讀 1751·2019-08-30 13:59