當前位置:首頁 » 編程軟體 » centosnginx自動啟動腳本

centosnginx自動啟動腳本

發布時間: 2022-10-21 15:05:39

㈠ centos7怎麼編譯安裝nginx

安裝環境為:最小化安裝的centos7,關閉seliunx。
最小化安裝centos:
關閉selinux
sed –i 『s/SELINUX=enforcing/SELINUX=disabled/g』 /etc/selinux/config

開始安裝nginx1.7.8
創建群組
groupadd www
創建一個用戶,不允許登陸和不創主目錄
useradd -s /sbin/nologin -g www -M www
#下載最新版nginx
wget -C http://nginx.org/download/nginx-1.7.8.tar.gz
tar zxvf nginx-1.7.8.tar.gz
#編譯基本能運行的nginx
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_mole --with-http_ssl_mole --with-http_gzip_static_mole
make
make install

如果有錯誤提示:
./configure: error: C compiler cc is not found
解決方法:
yum install gcc gcc-c++

如果有錯誤提示:
./configure: error: the HTTP rewrite mole requires the PCRE library.
You can either disable the mole by using –without-http_rewrite_mole
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using –with-pcre=<path> option.
解決方法:
yum install pcre-devel

如果有錯誤提示:
./configure: error: SSL moles require the OpenSSL library.
You can either do not enable the moles, 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.
解決方法:
yum install openssl-devel

以上錯誤提示依次解決後:再一次的運行
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_mole --with-http_ssl_mole --with-http_gzip_static_mole
make
meke install

編譯參數解釋:
#指定運行許可權的用戶
--user=www
#指定運行的許可權用戶組
--group=www
#指定安裝路徑
--prefix=/usr/local/nginx
#支持nginx狀態查詢
--with-http_stub_status_mole
#開啟ssl支持
--with-http_ssl_mole
#開啟GZIP功能
--with-http_gzip_static_mole

因此要順利的通過nginx編譯安裝必須安裝的依賴關系有:
yum install gc gcc gcc-c++ pcre-devel zlib-devel openssl-devel

2、在 centos7 中為nginx的啟動、重啟、重載配置添加腳本
nginx直接啟動的方法:
/usr/local/nginx/sbin/nginx

但是不是很方便,因此使用下面的腳本來控制nginx的啟動關閉重載更加合理一些。
編輯文件:vim /usr/lib/systemd/system/nginx.service 添加下面的腳本,注意路徑 !
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

systemctl的一些使用方法:
systemctl is-enabled servicename.service #查詢服務是否開機啟動
systemctl enable xxx.service #開機運行服務
systemctl disable xxx.service #取消開機運行
systemctl start xxx.service #啟動服務
systemctl stop xxx.service #停止服務
systemctl restart xxx.service #重啟服務
systemctl reload xxx.service #重新載入服務配置文件
systemctl status xxx.service #查詢服務運行狀態
systemctl --failed #顯示啟動失敗的服務

因此,添加上面腳本後,centos7 中操作nginx的方法有
systemctl is-enabled nginx.service #查詢nginx是否開機啟動
systemctl enable nginx.service #開機運行nginx
systemctl disable nginx.service #取消開機運行nginx
systemctl start nginx.service #啟動nginx
systemctl stop nginx.service #停止nginx
systemctl restart nginx.service #重啟nginx
systemctl reload nginx.service #重新載入nginx配置文件
systemctl status nginx.service #查詢nginx運行狀態
systemctl --failed #顯示啟動失敗的服務

㈡ centos 7 啟動程序 帶參數d 是什麼意思

首先,系統貌似沒有加 d 的參數,除非程序是你自己開發的特定程序,加d為特定參數。
linux 添加開機啟動項的三種方法。
(1)編輯文件 /etc/rc.local
輸入命令:vim /etc/rc.local 將出現類似如下的文本片段:
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/etc/init.d/mysqld start #mysql開機啟動
/etc/init.d/nginx start #nginx開機啟動
/etc/init.d/php-fpm start #php-fpm開機啟動
/etc/init.d/memcached start #memcache開機啟動
#在文件末尾(exit 0之前)加上你開機需要啟動的程序或執行的命令即可(執行的程序需要寫絕對路徑,添加到系統環境變數的除外),如:
/usr/local/thttpd/sbin/thttpd -C /usr/local/thttpd/etc/thttpd.conf

(2)自己寫一個shell腳本
將寫好的腳本(.sh文件)放到目錄 /etc/profile.d/ 下,系統啟動後就會自動執行該目錄下的所有shell腳本。
(3)通過chkconfig命令設置
將啟動文件cp到 /etc/init.d/或者/etc/rc.d/init.d/(前者是後者的軟連接)下
vim 啟動文件,文件前面務必添加如下三行代碼,否側會提示chkconfig不支持
#!/bin/sh 告訴系統使用的shell,所以的shell腳本都是這樣
#chkconfig: 35 20 80 分別代表運行級別,啟動優先權,關閉優先權,此行代碼必須
#description: http server(自己隨便發揮)//兩行都注釋掉!!!,此行代碼必須
chkconfig --add 腳本文件名 操作後就已經添加了

㈢ nginx編譯安裝服務啟動腳本在哪

在你編譯是 --prefix=指定的目錄下有一個bin目錄,裡面有一個nginx啟動腳本,如果沒有指定,默認在/usr/local/nginx下,即/usr/local/nginx/sbin/nginx

㈣ 怎麼在centos 6.5安裝nginx

一、准備事項
(1) 因為nginx需要訪問80埠所以請先關閉或者開放防火牆埠,和selinux。
參考命令
關閉防火牆:
[root@local ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@local ~]# service iptables save
關閉selinux:
[root@local ~]# setenforce 0
[root@local ~]# vim /etc/selinux/config
將SELINUX=enforcing改為SELINUX=disabled

(2) 如果用到域名請自行構建DNS服務
二、安裝
(1) 因為nginx的運行需要安裝pcre、zlib等軟體包,因此我們進行安裝
Pcre=Pcre Compatible Regular Expressions(中文pcre兼容正則表達式)
Yum配置請參考: http://www.linuxidc.com/Linux/2015-11/125332.htm
[root@local ~] yum -y install pcre* zlib* #或者進行編譯安裝
[root@local ~]# useradd -M -s /sbin/nologin nginx #創建nginx服務

啟動用戶
(3) 編譯安裝nginx,下載地址:http://nginx.org/en/download.html 此次安裝為最新穩定版nginx-1.8.0
[root@local ~]# tar zxf nginx-1.8.0.tar.gz
[root@local ~]# cd nginx-1.8.0
[root@local nginx-1.8.0]# ls
auto CHANGES.ru configure html Makefile objs src
CHANGES conf contrib LICENSE man README
[root@local nginx-1.8.0]# ./configure --user=nginx --group=nginx --prefix=/application/nginx-1.8.0 --with-http_stub_status_mole --with-http_ssl_mole #./configure –help 參數詳解
[root@local nginx-1.8.0]# make
[root@local nginx-1.8.0]# make install

(4) 製作軟連接
[root@local nginx-1.8.0]#ln –a /application/nginx-1.8.0/
/application/nginx

(5) 基本使用
#語法檢查
[root@local nginx-1.8.0]# /application/nginx/sbin/nginx –t
nginx: the configuration file /application/nginx-1.8.0/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx-1.8.0/conf/nginx.conf test is successful
#啟動服務
[root@local nginx-1.8.0]# /application/nginx/sbin/nginx
#埠檢查
[root@local nginx-1.8.0]# netstat –lnt
#檢查進程
[root@local nginx-1.8.0]# ps -ef | grep nginx #埠信息保存在
/application/nginx/logs/ nginx.pid 文件中
#通過埠查看佔用進程
[root@local nginx-1.8.0]# lsof -i :80
#錯誤日誌
/application/nginx/logs/error.log

三、編寫nginx服務腳本
為了方便使用習慣,通過server 來啟動、關閉、開啟、重載nginx服務所以我們來編
寫nginx的服務腳本(自己編寫的腳本僅供參考!)
[root@local ~]# vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Server Contorl Script
PROG="/application/nginx/sbin/nginx"
PIDF="/application/nginx/logs/nginx.pid"
ok=`echo -e "\e[1;31m [ok] \e[0m"`
no=`echo -e "\e[1;31m [no] \e[0m"`
detection=`/application/nginx/sbin/nginx -t 2>&1`
screen_1=`echo $detection | awk '{print $6,$7,$8}'`
screen_2=`echo $detection | awk '{print $13,$14,$15}'`
if [ "$screen_1" = "syntax is ok" ] && [ "$screen_2" = "test is successful" ];
then
case "$1" in
start)
$PROG
echo "Nginx Is starting state $ok"
;;
stop)
kill -s QUIT $(cat $PIDF)
echo "Nginx Is closing state $ok"
;;
restart)
$0 stop
$0 start
echo "Nginx Is to restart state $ok"
;;
reload)
kill -s HUP $(cat $PIDF)
echo "Nginx Is overloaded state $ok"
;;
*)
echo "Usage: $0 (start|stop|restart|reload)"
exit 1
esac
else
echo "Nginx check state $no "
echo "Please check the configuration file"
echo "$detection"
fi
exit 0

[root@local ~]# chmod +x /etc/init.d/nginx
[root@local ~]# chkconfig –add nginx #添加為系統服務
[root@local ~]# chkconfig nginx on

四、簡單的nginx web站點
Nginx的默認站點目錄,是安裝目錄下的html這里是(/application/nginx/html)
在主配置文件/application/nginx/conf/nginx.conf 中查看,對於重新部署web頁面
只需將/application/nginx/html/中的index.html替換即可
主配置文件講解

[root@local ~]# egrep -v "#|^$" /application/nginx/conf/nginx.conf
worker_processes 1; #指定Nginx開啟的進程數
events { #設定Nginx的工作模式及連接數上線
worker_connections 1024;
}
http {
include mime.types; #主模塊命令,實現對配置文件所有包含文件的設置
default_type application/octet-stream; #屬於http核心模塊命令,這里設
置類型為二進制流,也就是當文件類型未定義時使用這種方式,例如,沒有配置PHP
環境時,nginx是不給予解析的,此時,用瀏覽器訪問PHP文件就會出現下載窗口。
sendfile on; #用於高效文件傳輸模式
keepalive_timeout 65; 設置客戶端請求頭文件讀取超時時間,如果超過這個時
間伺服器會關閉該連接。
server { #定義虛擬主機開始的關鍵字
listen 80; #用於指定虛擬主機的服務埠
server_name localhost; 用於指定ip地址或者域名,多個域名用空格隔開
location / {
root html;
index index.html index.htm; #用於設定訪問的默認首頁
}
error_page 500 502 503 504 /50x.html;# 靜態頁面重定向伺服器錯誤
頁面,例如攜程的網站崩潰出現的頁面
location = /50x.html {
root html;
}
}
}

㈤ centos中nginx怎麼啟動

Nginx的啟動 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 其中-c參數指定配置文件路徑。 Nginx的停止 Nginx支持以下幾種信號控制: TERM, INT 快速關閉 QUIT 從容關閉 HUP 平滑重啟 USR1 重新打開日誌文件,在切割文件時用處大 USR2 平滑升級 WINCH 從容關閉工作進程 我們可以通過信號停止Nginx主進程,首先,我們需要通過ps-ef|grep命令獲得master進程的PID,或者通過cat pid文件獲得主進程號。

Nginx的啟動

㈥ chkconfig無法識別nginx,如何設置nginx自啟

假定你源碼安裝Nginx:
安裝路徑是/usr/local/nginx
否則變更下面路徑的文件:
########################

nginx="/usr/local/nginx/sbin/nginx"
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
################################

則將下面文件:
#cd /etc/init.d/
#vi nginx
粘貼剛才的內容。檢查是不是完整
#chmod +x nginx
#chkconfig add nginx
#chkconfig nginx on
在Centos下是這樣。其他類同。

#!/bin/sh
#
#nginx - this script starts and stops the nginx daemin
#
# 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
# 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 0

nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)

NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"

lockfile=/var/lock/subsys/nginx

start() {
[ -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 $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}

restart() {
configtest || return $?
stop
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

㈦ 怎樣在centos上手動安裝配置lnmp環境

在centos上手動安裝配置lnmp環境的方法

  • 一、安裝所需的庫文件和編譯環境

  • yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers

  • 二、安裝PHP和MySQL

  • yum -y install php mysql mysql-server mysql-devel php-mysql php-cgi php-mbstring php-gd php-fastcgi

  • service mysqld start //啟動mysql服務

  • chkconfig mysqld on //設置開機自動啟動

  • 三、安裝nginx,由於CentOS沒有默認的nginx軟體包,需要啟用REHL的附件

  • 1. rpm -Uvh http://download.Fedora.RedHat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm

  • 2. yum -y install nginx

  • chkconfig nginx on //設置開機啟動

  • service nginx start //啟動ngin服務

  • 四、安裝spawn-fcgi來運行php-cgi //spawn-fcgi是用來調用php提供動態php格式的網頁

  • yum install spawn-fcgi

  • 五、下載spawn-fcgi 的啟動腳本

  • 1. wget http://bash.cyberciti.biz/dl/419.sh.zip //這是別人寫好的腳本,直接拿來用

  • 2. unzip 419.sh.zip

  • 3. mv 419.sh /etc/init.d/php_cgi

  • 4. chmod +x /etc/init.d/php_cgi

  • /etc/init.d/php_cgi start //啟動php_cgi

  • 1. netstat -tulpn | grep :9000 //查看進程,查看服務有沒有正常啟動,若出現如下代表一切正常

  • tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 4352/php-cgi

  • 六、配置nginx

  • vim /etc/nginx/nginx.conf //下面就是修改nginx.conf配置文件

  • user nginx //修改ngin守護進程的用戶

  • worker_processes 4; //工作進程數,一般與 CPU 核數等同,但實際的可以多一些

  • error_log logs/error.log; //錯誤日誌位置

  • events {

  • worker_connections 2048;#每個工作進程允許最大的同時連接數,可以稍微大一些,1024的倍數

  • }

  • gzip on;

  • server {

  • listen 80;

  • server_name 192.168.175.208; //nginx伺服器地址

  • location ~ .php$ {

  • root html;

  • fastcgi_pass 127.0.0.1:9000;

  • fastcgi_index index.php;

  • fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name; //這里SCRIPT_FILENAME後面指定的是nginx的網站目錄

  • include fastcgi_params;

  • }

  • 把前面注釋全部去掉,找到

  • location / {

  • root /html;

  • index index.php index.html index.htm;

  • }

  • 修改為如上所示 主要是添加index 後面的index.php

  • 七、編寫腳本,測試nginx與php有沒有結合

  • vim /usr/share/nginx/html/index.php

  • <?php

  • phpinfo

  • ?>

  • 最後通過瀏覽器訪問伺服器測試是否成功,出現php信息頁面表示成功。

  • 下面是我工作過程中遇到的一個問題。原來伺服器上安裝的有apache伺服器。但是現在要把圖片伺服器換成nginx,圖片伺服器裡面網頁跳轉的就不管用的。查找資料發現apache的rewrite規則需要轉換成nginx識別的規則才行,通過下面的網頁轉換後,在nginx.conf中添加

  • http://www.anilcetin.com/convert-apache-htaccess-to-nginx/ //先轉換原來的.htpaccess

  • 然後在nginx.conf 中的server里添加這行內容,指定你的htaccess所在的位置

  • include /var/www/html/webshop/web/.htaccess;

  • 小剛SEO為你解答

㈧ linux 安裝nginx後怎麼啟動

以Centos為例:
1、6.0以前的版本創建/etc/init.d/nginx啟動腳本
/etc/init.d/nginx start即可啟動
chkconfig nginx on設置開機自啟動
2、7.0需要創建nginx.service放到/usr/lib/systemd/system
systemctl start nginx
systemctl enable nginx

㈨ Nginx,一看就會

Nginx("engine x") 是一個高性能的 HTTP 和反向代理伺服器,特點是佔有內存少,並發能力強,事實上 nginx 的並發能力確實在同類型的網頁伺服器中表現較好,中國大陸使用 nginx 網站用戶有:網路、京東、新浪、網易、騰訊、 淘寶等。

1.1 WEB 伺服器

Nginx 可以作為靜態頁面的 web 伺服器,同時還支持 CGI 協議的動態語言,比如 perl、php

等。但是不支持 java。Java 程序只能通過與 tomcat 配合完成。Nginx 專為性能優化而開發,性能是其最重要的考量,實現上非常注重效率 ,能經受高負載的考驗,有報告表明能支持高達 50000個並發連接數。

1.2 反向代理

1.正向代理,代理客戶端,客戶端需要配置代理

2.反向代理,代理服務端,客戶端無感知

1.3 負載均衡

Nginx 的非同步框架可以處理很大的並發請求,把這些並發請求 hold 住之後就可以分發給後台服務端(backend servers,也叫做服務池, 後面簡稱 backend)來做復雜的計算、處理和響應,這種模式的好處是相當多的:隱藏業務主機更安全,節約了公網 IP 地址,並且在業務量增加的時候可以方便地擴容後台伺服器。

這時候集群的概念產生了,我們增加伺服器的數量,然後將請求分發到各個伺服器上,將原先請求集中到單個伺服器上的情況改為將請求分發到多個伺服器上,將負載分發到不同的服器,也就是我們所說的負載均衡。

1.4 動靜分離

為了加快網站的解析速度,可以把動態頁面和靜態頁面由不同的伺服器來解析,加快解析速度。降低原來單個伺服器的壓力。

Nginx官網

2.1 相關安裝包

pcre-8.37.tar.gz openssl-1.0.1t.tar.gz zlib-1.2.8.tar.gz nginx-1.11.1.tar.gz

2.2 安裝流程

2.1.1.安裝 pcre 解壓縮 pcre-xx.tar.gz 包

進入解壓縮目錄,執行./configure

如果提示,需要提前安裝 gcc++,進入安裝光碟目錄的軟體包(/media/CentOSXX/Package)執行

rpm -ivh libstdc+ devel-4.4.7-17.el6.x86_64.rpm

rpm -ivh gcc-c+ 4.4.7-17.el6.x86_64.rpm

./configure 完成後,回到 pcre 目錄下執行 make,再執行 make install

2.2.2.安裝 openssl

解壓縮 openssl-xx.tar.gz 包。

進入解壓縮目錄,執行./config

make && make install

2.2.3.安裝 zlib 解壓縮 zlib-xx.tar.gz 包。

進入解壓縮目錄,執行./configure。

make && make install

2.2.4.安裝 nginx

解壓縮 nginx-xx.tar.gz 包。

進入解壓縮目錄,執行./configure。

make && make install

查看開放的埠號

firewall-cmd --list-all

設置開放的埠號

firewall-cmd --add-service=http –permanent

sudo firewall-cmd --add-port=80/tcp --permanent

重啟防火牆

firewall-cmd –reload

2.3 Nginx 啟動

命令

啟動命令:在/usr/local/nginx/sbin 目錄下執行 ./nginx

關閉命令: 在/usr/local/nginx/sbin 目錄下執行 ./nginx -s stop

重新載入命令: 在/usr/local/nginx/sbin 目錄下執行 ./nginx -s reload·

設置 nginx 為自啟動服務

修改 linux 啟動腳本/etc/rc.d/rc

加入 :/usr/local/nginx/sbin/nginx

nginx 安裝目錄下,其默認的配置文件都放在conf 目錄下,而主配置文件nginx.conf 也在其中,後續對 nginx 的使用基本上都是對此配置文件進行相應的修改。

根據上述文件,我們可以很明顯的將 nginx.conf 配置文件分為三部分

第一部分:全局塊

從配置文件開始到 events 塊之間的內容,主要會設置一些影響 nginx 伺服器整體運行的配置指令,主要包括配置運行 Nginx 伺服器的用戶(組)、允許生成的 worker process 數,進程 PID 存放路徑、日誌存放路徑和類型以及配置文件的引入等。

比如上面第一行配置的:worker_processes 1;

這是 Nginx 伺服器並發處理服務的關鍵配置,worker_processes 值越大,可以支持的並發處理量也越多,但是會受到硬體、軟體等設備的制約。

第二部分:events 塊

events 塊涉及的指令主要影響 Nginx 伺服器與用戶的網路連接,常用的設置包括是否開啟對多 work process 下的網路連接進行序列化,是否允許同時接收多個網路連接,選取哪種事件驅動模型來處理連接請求,每個 word process 可以同時支持的最大連接數等。

上述例子就表示每個 work process 支持的最大連接數為 1024.

這部分的配置對 Nginx 的性能影響較大,在實際中應該靈活配置。

第三部分:http 塊

這算是 Nginx 伺服器配置中最頻繁的部分,代理、緩存和日誌定義等絕大多數功能和第三方模塊的配置都在這里。

需要注意的是:http 塊也可以包括 http 全局塊、server 塊。

http 全局塊

http 全局塊配置的指令包括文件引入、MIME-TYPE 定義、日誌自定義、連接超時時間、單鏈接請求數上限等。

server 塊

這塊和虛擬主機有密切關系,虛擬主機從用戶角度看,和一台獨立的硬體主機是完全一樣的,該技術的產生是為了節省互聯網伺服器硬體成本。

每個 http 塊可以包括多個 server 塊,而每個 server 塊就相當於一個虛擬主機。

而每個 server 塊也分為全局 server 塊,以及可以同時包含多個 locaton 塊。

全局 server 塊

最常見的配置是本虛擬機主機的監聽配置和本虛擬主機的名稱或 IP 配置。

location 塊

一個 server 塊可以配置多個 location 塊。

這塊的主要作用是基於 Nginx 伺服器接收到的請求字元串(例如 server_name/uri-string),對虛擬主機名稱(也可以是 IP 別名)之外的字元串(例如 前面的 /uri-string)進行匹配,對特定的請求進行處理。地址定向、數據緩存和應答控制等功能,還有許多第三方模塊的配置也在這里進行。

案例配置如下:

location 指令說明

該指令用於匹配 URL,語法如下:

= :用於不含正則表達式的 uri 前,要求請求字元串與 uri 嚴格匹配,如果匹配

成功,就停止繼續向下搜索並立即處理該請求。

~:用於表示 uri 包含正則表達式,並且區分大小寫。

~*:用於表示 uri 包含正則表達式,並且不區分大小寫。

^~:用於不含正則表達式的 uri 前,要求 Nginx 伺服器找到標識 uri 和請求字

符串匹配度最高的 location 後,立即使用此 location 處理請求,而不再使用 location

塊中的正則 uri 和請求字元串做匹配。

注意:如果 uri 包含正則表達式,則必須要有 ~ 或者 ~* 標識。

案例配置如下:

在 linux 下有 Nginx、LVS、Haproxy 等等服務可以提供負載均衡服務,而且 Nginx 提供了幾種分配方式(策略):

輪詢(默認)

每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器 down 掉,能自動剔除。

weight

weight 代表權重,默認為 1,權重越高被分配的客戶端越多指定輪詢幾率,weight 和訪問比率成正比,用於後端伺服器性能不均的情況。

ip_hash

每個請求按訪問 ip 的 hash 結果分配,這樣每個訪客固定訪問一個後端伺服器,可以解決 session 的問題。

fair(第三方)

按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

動靜分離從目前實現角度來講大致分為兩種:

1.一種是純粹把靜態文件獨立成單獨的域名,放在獨立的伺服器上,也是目前主流推崇的方案;

2.另外一種方法就是動態跟靜態文件混合在一起發布,通過 nginx 來分開。

通過 location 指定不同的後綴名實現不同的請求轉發。通過 expires 參數設置,可以使瀏覽器緩存過期時間,減少與伺服器之前的請求和流量。具體 Expires 定義:是給一個資源設定一個過期時間,也就是說無需去服務端驗證,直接通過瀏覽器自身確認是否過期即可,所以不會產生額外的流量。此種方法非常適合不經常變動的資源。(如果經常更新的文件,不建議使用 Expires 來緩存),我這里設置 3d,表示在這 3 天之內訪問這個 URL,發送一個請求,比對伺服器該文件最後更新時間沒有變化,則不會從伺服器抓取,返回狀態碼304,如果有修改,則直接從伺服器重新下載,返回狀態碼 200。

master-workers 的機制的好處

首先,對於每個 worker 進程來說,獨立的進程,不需要加鎖,所以省掉了鎖帶來的開銷,

同時在編程以及問題查找時,也會方便很多。其次,採用獨立的進程,可以讓互相之間不會

影響,一個進程退出後,其它進程還在工作,服務不會中斷,master 進程則很快啟動新的

worker 進程。當然,worker 進程的異常退出,肯定是程序有 bug 了,異常退出,會導致當

前 worker 上的所有請求失敗,不過不會影響到所有請求,所以降低了風險。

需要設置多少個 worker

Nginx 同 redis 類似都採用了 io 多路復用機制,每個 worker 都是一個獨立的進程,但每個進

程里只有一個主線程,通過非同步非阻塞的方式來處理請求, 即使是千上萬個請求也不在話

下。每個 worker 的線程可以把一個 cpu 的性能發揮到極致。所以 worker 數和伺服器的 cpu

數相等是最為適宜的。設少了會浪費 cpu,設多了會造成 cpu 頻繁切換上下文帶來的損耗。

連接數 worker_connection

這個值是表示每個 worker 進程所能建立連接的最大值,所以,一個 nginx 能建立的最大連接數,應該是 worker_connections * worker_processes。當然,這里說的是最大連接數,對於HTTP 請 求 本 地 資 源 來 說 , 能 夠 支 持 的 最 大 並 發 數 量 是 worker_connections * worker_processes,如果是支持 http1.1 的瀏覽器每次訪問要佔兩個連接,所以普通的靜態訪問最大並發數是: worker_connections * worker_processes /2,而如果是 HTTP 作 為反向代理來說,最大並發數量應該是 worker_connections *

worker_processes/4。因為作為反向代理伺服器,每個並發會建立與客戶端的連接和與後端服務的連接,會佔用兩個連接。

注意:此部分屬於高級技術,近幾日會將下面的知識點補充完畢。

8.1 Keepalived+Nginx 高可用集群(主從模式)

8.2 Keepalived+Nginx 高可用集群(雙主模式)

熱點內容
破解exe加密視頻 發布:2025-05-17 11:23:41 瀏覽:976
我的世界伺服器圈太大了怎麼辦 發布:2025-05-17 11:15:21 瀏覽:614
便宜的免費雲伺服器 發布:2025-05-17 11:08:50 瀏覽:776
中國頂級dhcp解析伺服器地址 發布:2025-05-17 11:06:27 瀏覽:34
php轉義html 發布:2025-05-17 11:04:00 瀏覽:567
鋼筋籠加密區規范 發布:2025-05-17 10:59:50 瀏覽:4
我的世界網易手機版主播伺服器房號 發布:2025-05-17 10:40:59 瀏覽:227
豎編譯 發布:2025-05-17 09:56:08 瀏覽:229
編程畫飛機 發布:2025-05-17 09:54:03 瀏覽:803
手機如何解鎖密碼屏幕鎖怎麼刪除 發布:2025-05-17 09:52:04 瀏覽:125