1、安裝Nginx:
一、解決依賴關係html
# yum groupinstall "Development Tools" "Server Platform Deveopment" # yum install openssl-devel pcre-devel
二、安裝
首先添加用戶nginx,實現以之運行nginx服務進程:node
# groupadd -r nginx # useradd -r -g nginx nginx 接着開始編譯和安裝: # ./configure \ --prefix=/usr \ --sbin-path=/usr/sbin/nginx \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --user=nginx \ --group=nginx \ --with-http_ssl_module \ --with-http_flv_module \ --with-http_stub_status_module \ --with-http_gzip_static_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/fcgi/ \ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \ --http-scgi-temp-path=/var/tmp/nginx/scgi \ --with-pcre # make && make install
說明:
一、Nginx可使用Tmalloc(快速、多線程的malloc庫及優秀性能分析工具)來加速內存分配,使用此功能須要事先安裝gperftools,然後在編譯nginx添加--with-google_perftools_module選項便可。
二、 若是想使用nginx的perl模塊,能夠經過爲configure腳本添加--with-http_perl_module選項來實現,但目前此模塊仍 處於實驗性使用階段,可能會在運行中出現意外,所以,其實現方式這裏再也不介紹。若是想使用基於nginx的cgi功能,也能夠基於FCGI來實現,具體實 現方法請參照網上的文檔。
三、爲nginx提供SysV init腳本:
新建文件/etc/rc.d/init.d/nginx,內容以下:nginx
#!/bin/sh # # nginx - this script starts and stops the nginx daemon # # chkconfig: - 85 15 # description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server # processname: nginx # config: /etc/nginx/nginx.conf # config: /etc/sysconfig/nginx # 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="/usr/sbin/nginx" prog=$(basename $nginx) NGINX_CONF_FILE="/etc/nginx/nginx.conf" [ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx lockfile=/var/lock/subsys/nginx make_dirs() { # make required directories user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -` options=`$nginx -V 2>&1 | grep 'configure arguments:'` for opt in $options; do if [ `echo $opt | grep '.*-temp-path'` ]; then value=`echo $opt | cut -d "=" -f 2` if [ ! -d "$value" ]; then # echo "creating" $value mkdir -p $value && chown -R $user $value fi fi done } start() { [ -x $nginx ] || exit 5 [ -f $NGINX_CONF_FILE ] || exit 6 make_dirs 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 sleep 1 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
然後爲此腳本賦予執行權限:
# chmod +x /etc/rc.d/init.d/nginx
添加至服務管理列表,並讓其開機自動啓動:
# chkconfig --add nginx
# chkconfig nginx on
然後就能夠啓動服務並測試了:
# service nginx start
bash
Nginx 的代碼是由一個核心和一系列的模塊組成, 核心主要用於提供Web Server的基本功能,以及Web和Mail反向代理的功能;還用於啓用網絡協議,建立必要的運行時環境以及確保不一樣的模塊之間平滑地進行交互。不過, 大多跟協議相關的功能和某應用特有的功能都是由nginx的模塊實現的。這些功能模塊大體能夠分爲事件模塊、階段性處理器、輸出過濾器、變量處理器、協 議、upstream和負載均衡幾個類別,這些共同組成了nginx的http功能。事件模塊主要用於提供OS獨立的(不一樣操做系統的事件機制有所不一樣) 事件通知機制如kqueue或epoll等。協議模塊則負責實現nginx經過http、tls/ssl、smtp、pop3以及imap與對應的客戶端 創建會話。
Nginx的核心模塊爲Main和Events,此外還包括標準HTTP模塊、可選HTTP模塊和郵件模塊,其還能夠支持諸多 第三方模塊。Main用於配置錯誤日誌、進程及權限等相關的參數,Events用於配置IO模型,如epoll、kqueue、select或poll 等,它們是必備模塊。
服務器
3防盜鏈
(1) 定義合規的引用
valid_referers none | blocked | server_names | string ...;
(2) 拒毫不合規的引用
if ($invalid_referer) {
rewrite ^/.*$ http://www.b.org/403.html
}網絡
valid_referers多線程
語法:valid_referers [none|blocked|server_names] …
默認值:no
使用字段:server, location
這個指令在referer頭的基礎上爲 $invalid_referer 變量賦值,其值爲0或1。
可使用這個指令來實現防盜鏈功能,若是valid_referers列表中沒有Referer頭的值, $invalid_referer將被設置爲1(參照前例)。
參數可使以下形式:負載均衡
server { listen 80; server_name www.baidu.org; #charset koi8-r; #access_log logs/host.access.log main; location / { root /www/baidu.org/; index index.html index.htm; } ############################################################### 以下:防盜鏈 location ~* \.(jpg|png|gif|jpeg)$ { root /www/baidu.org; valid_referers none blocked www.baidu.org *.baidu.org; if ($invalid_referer) { rewrite ^/ http://www.baidu.org/403.html; # 若是有盜鏈的狀況就使用url重寫到錯我頁面 } }
}
[root@node5 nginx]# cd /www/baidu.org/ [root@node5 baidu.org]# pwd /www/baidu.org [root@node5 baidu.org]# cat index.html www.baidu.org <img src="http://172.16.249.27/images/1.jpg"> #####################本身域內中的服務器使用####################
[root@node5 baidu.org]# cd /www/firefox.com/ [root@node5 firefox.com]# cat index.html <h1>www.firefox.com<h1> <img src="http://172.16.249.27/images/1.jpg"> ####################不是屬於本區域內的服務器###################