Nginx官方站點 http://nginx.org/cn/html
tengine 淘寶基於nginx二次開發 http://tengine.taobao.org/nginx
nginx已經附帶memcache模塊,能夠管理緩存,並且支持平滑升級......正則表達式
系統Centos6.5_64位 rpm包和源碼包 我這是源碼包shell
wget http://nginx.org/download/nginx-1.6.2.tar.gz 穩定版apache
注意源碼編譯前請肯定你的開發包組是否安裝 開發工具 vim
yum groupinstall "開發工具" rpm -q pcre-devel 沒裝 yum install pcre-devel -y 依賴perl擴展的正則表達式 yum groupinfo "開發工具" 能夠看到這個開發工具中的包組內容 groupadd -r -g 110 nginx 添加以個nginx組爲系統組 useradd -r -u 110 -g 110 nginx 添加以個用戶爲系統用戶 專門管理nginx
解壓安裝緩存
[root@tomcat2 ~]# tar xf nginx-1.6.2.tar.gz [root@tomcat2 ~]# cd nginx-1.6.2 [root@tomcat2 nginx-1.6.2]# ls auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src [root@tomcat2 nginx-1.6.2]# ./configure --help |less
編譯tomcat
./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 \ --with-file-aio \ --with-http_image_filter_module \ 報錯以下 ./configure: error: SSL modules require the OpenSSL library. You can either do not enable the modules, or install the OpenSSL library into the system, or build the OpenSSL library statically from the source with nginx by using --with-openssl=<path> option. 少ssl模塊編譯少的全是devel包 因此安裝 yum install openssl-devel gd-devel gd庫是圖片過濾處理模塊 沒報錯 make && make instal
提供啓動腳本 腳原本自 http://wiki.nginx.org/RedHatNginxInitScript less
vim /etc/init.d/nginxtcp
#!/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/init.d/nginx chkconfig --add nginx [root@tomcat2 nginx-1.6.2]# /etc/init.d/nginx start 正在啓動 nginx: [肯定] [root@tomcat2 nginx-1.6.2]# netstat -antlp |grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 9570/nginx
一個簡單nginx就搭建好了測試:
localtion段官方文檔http://nginx.org/en/docs/http/ngx_http_core_module.html#location
localtion URI [ = | ~|~*|^~|] uri {...}
localtion URI {} 對當前路徑下的全部對象都生效
localtion = URI {} 精確匹配當前的路徑,不包括子路徑,所以,只對當前資源生效
localtion ~ URI {} 模式匹配URI,此處的URI可以使用正則表達式, ~區分大小寫,~*不區分大小寫
localtion ^~ URI {} 不使用正則表達式
localtion ACL 控制 官方文檔http://nginx.org/en/docs/http/ngx_http_access_module.html
官方示例 location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; allow 2001:0db8::/32; deny all; }
基於用戶名密碼認證幫助文檔http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html
建立用戶名密碼須要依賴apache的htpasswd命令 因此安裝httpd 不要讓其開機自動啓動
[root@tomcat2 nginx]# htpasswd -c -m /etc/nginx/.user tom New password: Re-type new password: Adding password for user tom [root@tomcat2 nginx]# htpasswd -m /etc/nginx/.user leo New password: Re-type new password: Updating password for user leo 第2次不要加-c 否則重建.user 修改配置文件 location / { root html; index index.html index.htm; auth_basic "ACL..."; auth_basic_user_file /etc/nginx/.user; } 保存重啓 測試