1譬挚、安裝相關(guān)依賴? ? yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
2镰惦、另外下載模塊:nginx_upstream_check_module-0.3.0.tar.gz?—— 檢查后端服務(wù)器的狀態(tài)??https://github.com/yaoweibin/nginx_upstream_check_module/releases
3唇辨、加壓pcre? tar -xzf pcre-8.34.tar.gz??mv pcre-8.34 /usr/local/pcre
? ? ? ?解壓并重命名為
3、cd nginx-1.20.1? ?
??./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module? --with-http_image_filter_module --add-module=/usr/local/nginx_upstream
make && make install
4、/usr/local/nginx/sbin/nginx -v
5、添加運(yùn)行使用用戶
6婉徘、/usr/sbin/groupadd nginx
7、/usr/sbin/useradd -g nginx nginx
8咐汞、檢查配置文件nginx.conf的正確性命令:
/usr/local/nginx/sbin/nginx -t
9盖呼、Nginx 啟動(dòng)命令如下:
/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -s reopen
測(cè)試一下是否有錯(cuò):/usr/local/nginx/sbin/nginx -t
平滑重啟:/usr/local/nginx/sbin/nginx -s reload
10、加入系統(tǒng)服務(wù)
vim /etc/init.d/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=" /usr/local/nginx/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/local/nginx/sbin/nginx"
prog=$(basename $nginx)
NGINX_CONF_FILE="/usr/local/nginx/conf/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:.*--user=" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
? if [ -n "$user" ]; then
? ? ? if [ -z "`grep $user /etc/passwd`" ]; then
? ? ? ? useradd -M -s /bin/nologin $user
? ? ? fi
? ? ? 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
? ? fi
}
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 $prog -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
11碉考、 設(shè)置執(zhí)行權(quán)限chmod +x /etc/init.d/nginx
12塌计、設(shè)置中的模式開機(jī)啟動(dòng)/sbin/chkconfig nginx on
檢查一下## 顯示開機(jī)啟動(dòng)自動(dòng)列表是否存在nginx chkconfig --list # 顯示開機(jī)自動(dòng)啟動(dòng)的服務(wù)sudo chkconfig --list nginx
nginx 0:off 1:off 2:on 3:on 4:on 5:on 6:off
完成!
之后侯谁,就可以使用以下命令了
service nginx start
service nginx stop
service nginx restart
service nginx reload
service nginx status
將nginx 加入系統(tǒng)變量
修改/etc/profile 文件
? vim /etc/profile
1
添加PATH
如果已經(jīng)存在PATH 也只需要在下面添加更多的PATH 兩者之間不沖突
#? 在文件中添加nginx 的執(zhí)行文件锌仅。
export PATH=$PATH:/usr/local/nginx/sbin
1
2
使立即生效
保存文件后PATH 不會(huì)立即生效需要執(zhí)行 source /etc/profile
source /etc/profile
加入執(zhí)行權(quán)限chmod +x nginx
先將nginx服務(wù)加入chkconfig管理列表:
chkconfig --add /etc/init.d/nginx
加完這個(gè)之后章钾,就可以使用service對(duì)nginx進(jìn)行啟動(dòng),重啟等操作了热芹。
service nginx start
service nginx stop
13贱傀、設(shè)置nginx 反向代理
vim /usr/local/nginx/conf/nginx.comf
#user nobody;
worker_processes? 1;
#error_log? logs/error.log;
#error_log? logs/error.log? notice;
#error_log? logs/error.log? info;
#pid? ? ? ? logs/nginx.pid;
events {
? ? worker_connections? 1024;
}
http {
? ? ? ? include? ? ? mime.types;? #文件擴(kuò)展名與文件類型映射表
? ? ? ? default_type? application/octet-stream; #默認(rèn)文件類型,默認(rèn)為text/plain
? ? ? ? #access_log off; #取消服務(wù)日志? ?
? ? ? ? log_format myFormat ' $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 myFormat;? #combined為日志格式的默認(rèn)值
? ? ? ? sendfile on;? #允許sendfile方式傳輸文件伊脓,默認(rèn)為off府寒,可以在http塊,server塊报腔,location塊株搔。
? ? ? ? sendfile_max_chunk 100k;? #每個(gè)進(jìn)程每次調(diào)用傳輸數(shù)量不能大于設(shè)定的值,默認(rèn)為0纯蛾,即不設(shè)上限纤房。
? ? ? ? keepalive_timeout 65;? #連接超時(shí)時(shí)間,默認(rèn)為75s翻诉,可以在http炮姨,server,location塊碰煌。
? ? ? ? proxy_connect_timeout 1;? #nginx服務(wù)器與被代理的服務(wù)器建立連接的超時(shí)時(shí)間舒岸,默認(rèn)60秒
? ? ? ? proxy_read_timeout 1; #nginx服務(wù)器想被代理服務(wù)器組發(fā)出read請(qǐng)求后,等待響應(yīng)的超時(shí)間芦圾,默認(rèn)為60秒蛾派。
? ? ? ? proxy_send_timeout 1; #nginx服務(wù)器想被代理服務(wù)器組發(fā)出write請(qǐng)求后,等待響應(yīng)的超時(shí)間堕扶,默認(rèn)為60秒碍脏。
? ? ? ? proxy_http_version 1.0 ; #Nginx服務(wù)器提供代理服務(wù)的http協(xié)議版本1.0梭依,1.1稍算,默認(rèn)設(shè)置為1.0版本。
? ? ? ? #proxy_method get;? ? #支持客戶端的請(qǐng)求方法役拴。post/get糊探;
? ? ? ? proxy_ignore_client_abort on;? #客戶端斷網(wǎng)時(shí),nginx服務(wù)器是否終端對(duì)被代理服務(wù)器的請(qǐng)求河闰。默認(rèn)為off科平。
? ? ? ? proxy_ignore_headers "Expires" "Set-Cookie";? #Nginx服務(wù)器不處理設(shè)置的http相應(yīng)投中的頭域,這里空格隔開可以設(shè)置多個(gè)姜性。
? ? ? ? proxy_intercept_errors on;? ? #如果被代理服務(wù)器返回的狀態(tài)碼為400或者大于400瞪慧,設(shè)置的error_page配置起作用。默認(rèn)為off部念。
? ? ? ? proxy_headers_hash_max_size 1024; #存放http報(bào)文頭的哈希表容量上限弃酌,默認(rèn)為512個(gè)字符氨菇。
? ? ? ? proxy_headers_hash_bucket_size 128; #nginx服務(wù)器申請(qǐng)存放http報(bào)文頭的哈希表容量大小。默認(rèn)為64個(gè)字符妓湘。
? ? ? ? proxy_next_upstream timeout;? #反向代理upstream中設(shè)置的服務(wù)器組查蓉,出現(xiàn)故障時(shí),被代理服務(wù)器返回的狀態(tài)值榜贴。error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off
? ? ? ? #proxy_ssl_session_reuse on; 默認(rèn)為on豌研,如果我們?cè)阱e(cuò)誤日志中發(fā)現(xiàn)“SSL3_GET_FINSHED:digest check failed”的情況時(shí),可以將該指令設(shè)置為off唬党。
upstream web {
? ? # 默認(rèn)以輪詢策
? ? server 192.168.110.251 ;
? ? server 192.168.110.252 backup;
}
server {
? ? ? ? listen? ? ? 80;
? ? # 服務(wù)器名稱鹃共,隨便起名
? ? ? ? server_name? www.proxy.com;
? ? ? ? #charset koi8-r;
? ? ? ? #access_log? logs/host.access.log? main;
? ? ? ? location / {
? ? ? ? ? # root? html;
? ? ? ? ? # index? index.html index.htm;
? ? ? ? ? #設(shè)置主機(jī)頭和客戶端真實(shí)地址,以便服務(wù)器獲取客戶端真實(shí)IP
? ? ? ? ? proxy_set_header Host $host;
? ? ? ? ? proxy_set_header X-Real-IP $remote_addr;
? ? ? ? ? proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
? ? ? ? ? #禁用緩存
? ? ? ? ? proxy_buffering off;
? ? ? ? ? # 反向代理的地址
? ? ? ? ? proxy_pass http://web;
? ? ? ? }
}
}