溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Nignx服務(wù)基礎(chǔ)

發(fā)布時(shí)間:2020-07-11 00:52:44 來(lái)源:網(wǎng)絡(luò) 閱讀:111800 作者:曹國(guó)吉 欄目:系統(tǒng)運(yùn)維

一、Nginx簡(jiǎn)介;

概述:Nginx是一款由俄羅斯開(kāi)發(fā)的開(kāi)源的高性能HTTP服務(wù)器和反向代理服務(wù)器,同時(shí)支持IMAP/POP3/SMTP代理服務(wù),其性能優(yōu)勢(shì)著為顯著,官網(wǎng)上稱:?jiǎn)闻_(tái)nginx服務(wù)器可以處理50000并發(fā);
特點(diǎn):高性能、穩(wěn)定、消耗硬件資源小、能夠處理大并發(fā),主要用于靜態(tài)的解析,動(dòng)靜頁(yè)面的分離;
優(yōu)勢(shì):
1.作為Web服務(wù)器,nginx處理靜態(tài)文件、索引文件以及自動(dòng)索引效率非常高。
2.作為代理服務(wù)器,Nginx可以實(shí)現(xiàn)無(wú)緩存的反向代理加速,提高網(wǎng)站運(yùn)行速度。
3.作為負(fù)載均衡服務(wù)器,Nginx既可以在內(nèi)部直接支持Rails和PHP,也可以支持HTTP代理服務(wù)器,對(duì)外進(jìn)行服務(wù)。同時(shí)支持簡(jiǎn)單的容錯(cuò)和利用算法進(jìn)行負(fù)載均衡。

二.安裝nginx程序

(1)安裝支持軟件
Nginx的配置以及運(yùn)行需要pcre、zlib等軟件包的支持。
yum install gcc gcc-c++ pcre-devel zlib-devel
(2)創(chuàng)建運(yùn)行用戶組
Nginx服務(wù)程序默認(rèn)以nobody身份運(yùn)行,建議創(chuàng)建專門(mén)的用戶賬號(hào),以便更準(zhǔn)確控制器訪問(wèn)權(quán)限,怎加靈活性,安全、降低風(fēng)險(xiǎn)。
useradd -M -s /sbin/nologin nginx
(3)編譯安裝Nginx

root@localhost opt]# cd nginx-1.12.0/
[root@localhost nginx-1.12.0]#./configure \
--prefix=/usr/local/nginx \  #安裝目錄
 --user=nginx \                                  #運(yùn)行用戶為Nginx
 --group=nginx \                             #運(yùn)行組為Nginx
 --with-http_stub_status_module     #模塊以支持狀態(tài)統(tǒng)計(jì),便于查看服務(wù)器的信息連接
 [root@localhost nginx-1.12.0]# make && make install

(4)優(yōu)化路徑
為了方便管理,可以為主程序ngin創(chuàng)建鏈接文件,方便直接用nginx命令直接調(diào)用nginx主程序

ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
(5)檢查配置

[root@localhost ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

(6)啟動(dòng)和停止Nginx

[root@localhost ~]# nginx  啟動(dòng)
[root@localhost ~]# killall -s HUP nginx  #重載配置
[root@localhost ~]# killall -s QUIT nginx #停止服務(wù)

(6)使用Nginx服務(wù)腳本
為了使用Nginx服務(wù)啟動(dòng)、停止、重載等操作更加方便,并使用chkconfig和service工具來(lái)進(jìn)行管理。

[root@localhost ~]# vim /etc/init.d/nginx 
#!/bin/bash
#chkconfig: - 99 20
 description: Nginx Service Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
        $PROG
;;
stop)
        kill -s QUIT $(cat $PIDF)
;;
reload)
        $0 stop
        $0 start
;;
restart)
        kill -s HUP $(cat $PIDF)
;;
*)
        echo "Usage:$0 {start|stop|restart|reload}"
;;
esac
exit 0
[root@localhost ~]# chmod +x /etc/init.d/nginx
[root@localhost ~]# chkconfig --add nginx

三.配置文件nginx.conf

1.全局配置

#user  nobody;  #運(yùn)行用戶
worker_processes  1; #工作進(jìn)程數(shù)量

#error_log  logs/error.log;   #錯(cuò)誤日志
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid; #PID文件的位置

2.I/O事件配置
使用“event{}”定界表記,用來(lái)指定Nginx的進(jìn)程的I/O響應(yīng)模型,每個(gè)進(jìn)程的連接數(shù)設(shè)置。

events {
    worker_connections  1024;   #每個(gè)進(jìn)程處理4096個(gè)連接
}

3.HTTP配置
使用“http{}”界定標(biāo)記包括訪問(wèn)日志,HTTP端口、頁(yè)面目錄、默認(rèn)字符集、連接保持、以及虛擬Web主機(jī)、PHP解析等一系列設(shè)置。其中大部分配置語(yǔ)句包含在界定標(biāo)記“server{}”內(nèi)

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;#保持連接超時(shí)
        #access_log  logs/access.log  main;

    #gzip  on;

    server { #Web服務(wù)的監(jiān)聽(tīng)配置
        listen 192.168.242.220:80;#監(jiān)聽(tīng)地址端口
        server_name  192.168.242.220:80;#網(wǎng)站名稱
        charset utf-8;#網(wǎng)頁(yè)的默認(rèn)字符集
        access_log  logs/www.kgc.com.host.access.log;#訪問(wèn)日志位置

        location / {  #根目錄配置
            root /var/www/html/kgc; #網(wǎng)站跟目錄的位置
            index  index.html index.htm;#默認(rèn)網(wǎng)頁(yè)(索引頁(yè))
        }

        error_page   500 502 503 504  /50x.html; #內(nèi)部錯(cuò)誤的反饋?lái)?yè)面
        location = /50x.html {   #錯(cuò)誤頁(yè)面配置
            root   html;
        }
    }

3.訪問(wèn)狀態(tài)統(tǒng)計(jì)
Nginx內(nèi)置了HTTP_STUB_STATUS狀態(tài)統(tǒng)計(jì)模塊,用來(lái)反饋當(dāng)前的Web訪問(wèn)情況,配置編譯數(shù)時(shí)可以怎加--with-http_stub_status_mdule來(lái)開(kāi)啟此模塊支持

要使用nginx的狀態(tài)統(tǒng)計(jì)功能,除了啟用內(nèi)建模塊以外,還需要修改nginx.conf配置文件。指定訪問(wèn)位置并添加stub_status
location / {
            stub_status on;#打開(kāi)狀態(tài)統(tǒng)計(jì)功能
            access_log off;#關(guān)閉此位置的日志記錄
            root /var/www/html/kgc;
            index  index.html index.htm;
        }

Nginx訪問(wèn)控制

基于授權(quán)的訪問(wèn)控制步驟
1.使用htpasswd生成用戶認(rèn)證文件,如果沒(méi)有該命令,可使用yun安裝httpd-tools軟件包


[root@localhost ~]#htpasswd /usr/local/nginx/passwd.db jiji #在/usr/local/nginx目錄生成passwd.db文件,用戶名為jiji,密碼輸入兩次。在passwd.db中生成用戶和密碼的密文

2.修改密碼文件的權(quán)限為400,將所有者改為nginx

[root@localhost ~]# chmod 400 /usr/local/nginx/passwd.db 
[root@localhost ~]# chown nginx /usr/local/nginx/passwd.db

3.修改主配置文件nginx.conf 添加相應(yīng)認(rèn)證配置項(xiàng)

location / {
            stub_status on;#打開(kāi)狀態(tài)統(tǒng)計(jì)功能
            access_log off;#關(guān)閉此位置的日志記錄
            root /var/www/html/kgc;
            index  index.html index.htm;
            auth_basic "secret";#添加認(rèn)證配置
            auth_basci_user_file /usr/loacl/nginx/passwd.db
        }

基于客戶端的訪問(wèn)控制
1.deny IP /IP段 :拒絕某個(gè)IP或IP段的客戶端
2.allow IP/IP段: 允許某個(gè)IP或IP段的客戶端
3.規(guī)則從上往下執(zhí)行,如匹配則停止,不再往下匹配


location / {
            stub_status on;
            access_log off;
            root /var/www/html/kgc;
            index  index.html index.htm;

             deny 192.169.10.10; #客戶端IP
             allow all;
        }

Nginx虛擬主機(jī)

每個(gè)虛擬Web站點(diǎn)擁有獨(dú)立的server{}配置端,各自監(jiān)聽(tīng)的ip地址 端口號(hào)可以單獨(dú)指定,網(wǎng)絡(luò)名稱不同
1.基于IP的虛擬主機(jī)
2.基于域名的虛擬主機(jī)
3.基于端口的虛擬主機(jī)

基于域名虛擬主機(jī)設(shè)置
server { #加入www.kgc.com對(duì)應(yīng)的站點(diǎn)
        listen       80;  
        server_name  www.kgc.com; #監(jiān)聽(tīng)地址
        charset utf-8;
        access_log  logs/www.kgc.com.host.access.log;

        location / {
            root /var/www/html/kgc; #www.kgc.com工作目錄
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

server { #加入www.accp.com 對(duì)應(yīng)的站點(diǎn)
        listen       80; 
        server_name  www.accp.com;#監(jiān)聽(tīng)地址
        charset utf-8;
        access_log  logs/www.accp.com.host.access.log;

        location / {
            root /var/www/html/accp; #工作目錄
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        }

基于ip地址

server {
        listen 192.168.242.220:80; #監(jiān)聽(tīng)192.168.242.220
        server_name  192.168.242.220:80; 
        charset utf-8;
        access_log  logs/www.kgc.com.host.access.log;

        location / {
            root /var/www/html/kgc;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

server {
        listen 192.168.242.167:80;
        server_name  192.168.242.167:80; #監(jiān)聽(tīng)192.168.242.167
        charset utf-8;
        access_log  logs/www.accp.com.host.access.log;

        location / {
            root /var/www/html/accp;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        }

基于端口

server {
        listen 192.168.242.220:80;
        server_name  192.168.242.220:80;
        charset utf-8;
        access_log  logs/www.kgc.com.host.access.log;

        location / {
            root /var/www/html/kgc;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

    server {
        listen 192.168.242.220:8080;
        server_name  192.168.242.220:8080;
        charset utf-8;
        access_log  logs/www.accp.com.host.access.log;

        location / {
            root /var/www/html/accp;
            index  index.html index.htm;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        }
向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI