nginx源码编译安装

下载源码包:http://nginx.org/
编译环境安装:

yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel -y unzip ngx_log_if-master.zip tar xf nginx-1.12.0.tar.gz && cd nginx-1.12.0 mkdir -p /var/tmp/nginx/client ./configure--prefix=/usr/local/nginx--sbin-path=/usr/local/nginx/sbin/nginx --conf-path=/usr/local/nginx/conf/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_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 --add-module=/usr/local/src/ngx_log_if-master make && make install# --add-module添加第三方模块,ngx_log_if-master

服务启动脚本:
#!/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:/usr/local/nginx/conf/nginx.conf # config:/etc/sysconfig/nginx # pidfile:/usr/local/nginx/logs/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 0nginx="/usr/local/nginx/sbin/nginx" prog=$(basename $nginx)sysconfig="/etc/sysconfig/$prog"#此配置文件有可能设置指定了nginx启动时加载的配置文件 lockfile="/var/lock/subsys/nginx" pidfile="/var/run/nginx/${prog}.pid"#根据编译参数,查看PID文件存放位置NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"[ -f $sysconfig ] && . $sysconfigstart() { [ -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 -p $pidfile $prog retval=$? echo [ $retval -eq 0 ] && rm -f $lockfile return $retval }restart() { configtest_q || return 6 stop start }reload() { configtest_q || return 6 echo -n $"Reloading $prog: " killproc -p $pidfile $prog -HUP echo }configtest() { $nginx -t -c $NGINX_CONF_FILE }configtest_q() { $nginx -t -q -c $NGINX_CONF_FILE }rh_status() { status $prog }rh_status_q() { rh_status >/dev/null 2>&1 }# Upgrade the binary with no downtime. upgrade() { local oldbin_pidfile="${pidfile}.oldbin"configtest_q || return 6 echo -n $"Upgrading $prog: " killproc -p $pidfile $prog -USR2 retval=$? sleep 1 if [[ -f ${oldbin_pidfile} && -f ${pidfile} ]]; then killproc -p $oldbin_pidfile $prog -QUIT success $"$prog online upgrade" echo return 0 else failure $"$prog online upgrade" echo return 1 fi }# Tell nginx to reopen logs reopen_logs() { configtest_q || return 6 echo -n $"Reopening $prog logs: " killproc -p $pidfile $prog -USR1 retval=$? echo return $retval }case "$1" in start) rh_status_q && exit 0 $1 ; ; stop) rh_status_q || exit 0 $1 ; ; restart|configtest|reopen_logs) $1 ; ; force-reload|upgrade) rh_status_q || exit 7 upgrade ; ; reload) rh_status_q || exit 7 $1 ; ; status|status_q) rh_$1 ; ; condrestart|try-restart) rh_status_q || exit 7 restart ; ; *) echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart|reopen_logs}" exit 2 esac

nginx.conf配置:
userwww; worker_processes1; #error_loglogs/error.log; #error_loglogs/error.lognotice; #error_loglogs/error.loginfo; #pidlogs/nginx.pid; events { worker_connections1024; } http { includemime.types; default_typeapplication/octet-stream; log_formatmain'$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #access_loglogs/access.logmain; sendfileon; #tcp_nopushon; #keepalive_timeout0; keepalive_timeout65; gzipon; access_loglogs/access.logmain; error_loglogs/error.log; include conf.d/*.conf; }

【nginx源码编译安装】conf.d/test.conf 虚拟主机配置:
server { listen80; server_namelocalhost; #charset koi8-r; #access_loglogs/host.access.logmain; access_log_bypass_if ($status = 404); access_log_bypass_if ($uri = '/index1.html'); location / { root/data/htdoc/www; indexindex.php index.html; } #error_page404/404.html; # redirect server error pages to the static page /50x.html # error_page500 502 503 504/50x.html; location = /50x.html { roothtml; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { #proxy_passhttp://127.0.0.1; #}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { root/data/htdoc/www; fastcgi_pass127.0.0.1:9000; fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name; #$document_root就是指的root根目录 includefastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { #denyall; #} }

    推荐阅读