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;
#}
}
推荐阅读
- flask框架快速入门|【flask高级】从源码深入理解flask的应用上下文和请求上下文
- LGSVL源码编译详细过程(Windows10)
- Java毕业设计项目实战篇|健康菜谱微信小程序+项目前后台源码(JavaSSM+Mysql)
- 数字藏品盲盒系统功能开发H5源码搭建
- 前沿技术|OneFlow源码一览(GDB编译调试)
- go 源码阅读 container/list
- Sublime|Sublime Text3编译运行C++/Java/Python程序语言出现中文乱码【已解决】
- 小程序|uni-app与uviewUI实现仿小米商城app(附源码)
- 打造一套NGINX监控
- Pinpoint源码解析(一)